/**
  * Form After Submit
  *
  * フォームの保存ボタンの前後に、一覧、プレビュー、削除ボタンを配置する
  * プレビューを配置する場合は、設定にて、preview を true にする
  *
  * @param CakeEvent $event
  * @return string
  */
 public function formAfterSubmit(CakeEvent $event)
 {
     if (!BcUtil::isAdminSystem()) {
         return;
     }
     $View = $event->subject();
     $data = $View->request->data;
     if (!preg_match('/(AdminEditForm|AdminEditAliasForm)$/', $event->data['id'])) {
         return;
     }
     $output = $View->BcHtml->link('一覧に戻る', array('plugin' => '', 'admin' => true, 'controller' => 'contents', 'action' => 'index'), array('class' => 'button'));
     $setting = Configure::read('BcContents.items.' . $data['Content']['plugin'] . '.' . $data['Content']['type']);
     if (!empty($setting['preview']) && $data['Content']['type'] != 'ContentFolder') {
         $output .= "\n" . $View->BcForm->button('プレビュー', array('class' => 'button', 'id' => 'BtnPreview'));
     }
     $output .= $event->data['out'];
     if (empty($data['Content']['site_root'])) {
         if ($data['Content']['alias_id']) {
             $deleteText = '削除';
         } else {
             $deleteText = 'ゴミ箱へ移動';
         }
         $output .= $View->BcForm->button($deleteText, array('class' => 'button', 'id' => 'BtnDelete'));
     }
     return $output;
 }
 /**
  * formAfterCreate
  * 
  * @param CakeEvent $event
  * @return array
  */
 public function formAfterEnd(CakeEvent $event)
 {
     $Form = $event->subject();
     if ($Form->request->params['controller'] == 'blog_posts') {
         if (!empty($Form->request->data['PetitBlogCustomFieldConfig']['status'])) {
             // ブログ記事追加画面にプチ・カスタムフィールド編集欄を追加する
             if ($Form->request->action == 'admin_add') {
                 if ($event->data['id'] == 'BlogPostForm') {
                     $event->data['out'] = $event->data['out'] . $Form->element('PetitBlogCustomField.petit_blog_custom_field_form');
                 }
             }
             // ブログ記事編集画面にプチ・カスタムフィールド編集欄を追加する
             if ($Form->request->action == 'admin_edit') {
                 if ($event->data['id'] == 'BlogPostForm') {
                     $event->data['out'] = $event->data['out'] . $Form->element('PetitBlogCustomField.petit_blog_custom_field_form');
                 }
             }
         }
     }
     if ($Form->request->params['controller'] == 'blog_contents') {
         // ブログ設定編集画面にプチ・カスタムフィールド設定欄を表示する
         if ($Form->request->action == 'admin_edit') {
             if ($event->data['id'] == 'BlogContentAdminEditForm') {
                 $event->data['out'] = $event->data['out'] . $Form->element('PetitBlogCustomField.petit_blog_custom_field_config_form');
             }
         }
         // ブログ追加画面にプチ・カスタムフィールド設定欄を表示する
         if ($Form->request->action == 'admin_add') {
             if ($event->data['id'] == 'BlogContentAdminAddForm') {
                 $event->data['out'] = $event->data['out'] . $Form->element('PetitBlogCustomField.petit_blog_custom_field_config_form');
             }
         }
     }
     return $event->data['out'];
 }
Ejemplo n.º 3
0
 /**
  * Checks if a requested asset exists and sends it to the browser
  *
  * @param CakeEvent $event containing the request and response object
  * @return mixed The resulting response.
  * @throws NotFoundException When asset not found
  */
 public function beforeDispatch(CakeEvent $event)
 {
     $url = urldecode($event->data['request']->url);
     if (strpos($url, '..') !== false || strpos($url, '.') === false) {
         return;
     }
     // CUSTOMIZE DELETE 2014/07/02 ryuring
     // >>>
     /*if ($result = $this->_filterAsset($event)) {
     			$event->stopPropagation();
     			return $result;
     		}*/
     // <<<
     $assetFile = $this->_getAssetFile($url);
     if ($assetFile === null || !file_exists($assetFile)) {
         return null;
     }
     $response = $event->data['response'];
     $event->stopPropagation();
     $response->modified(filemtime($assetFile));
     if ($response->checkNotModified($event->data['request'])) {
         return $response;
     }
     $pathSegments = explode('.', $url);
     $ext = array_pop($pathSegments);
     $this->_deliverAsset($response, $assetFile, $ext);
     return $response;
 }
Ejemplo n.º 4
0
 public function modelConstruct(CakeEvent $Event)
 {
     $Model = $Event->subject();
     // Because, by default, the SQL is only logged and displayed if debug > 2; using the `DebugKit`
     // new 'autoRun' and/or 'forceEnable' still doesn't help in profiling SQL calls in production.
     // This will force the current model's datasource to log all SQL calls ONLY when in production
     // mode and DebugKit is used with either 'autoRun' or 'forceEnable'.
     if (Reveal::is('DebugKit.running') && !Reveal::is('Page.test')) {
         $Model->getDatasource()->fullDebug = true;
     }
     if (!isset($Model->belongsToForeignModels)) {
         return;
     }
     // Get all foreign models used if not defined by current model.
     if (empty($Model->belongsToForeignModels)) {
         $foreignModels = $Model->find('all', array('fields' => array('DISTINCT' => 'foreign_model'), 'recursive' => -1, 'callbacks' => false));
         foreach ($foreignModels as $foreignModel) {
             // Rarely, some tokens are not associated with any other model.
             if (empty($foreignModel[$Model->alias]['foreign_model'])) {
                 continue;
             }
             list($plugin, $name) = pluginSplit($foreignModel[$Model->alias]['foreign_model']);
             $Model->belongsToForeignModels[$name] = array('className' => $foreignModel[$Model->alias]['foreign_model'], 'foreignKey' => 'foreign_key', 'conditions' => null, 'fields' => null, 'order' => null, 'counterCache' => false);
         }
     }
     // Associate foreign `belongsTo` models.
     $Event->result = Hash::merge((array) $Event->result, array('belongsTo' => array_merge($Model->belongsTo, $Model->belongsToForeignModels)));
 }
Ejemplo n.º 5
0
 /**
  * onAdminLoginSuccessful
  *
  * @param CakeEvent $event
  * @return void
  */
 public function onAdminLoginSuccessful($event)
 {
     $Controller = $event->subject();
     $message = __('Welcome %s.  Have a nice day', $Controller->Auth->user('name'));
     $Controller->Session->setFlash($message);
     $Controller->redirect(array('admin' => true, 'plugin' => 'example', 'controller' => 'example', 'action' => 'index'));
 }
Ejemplo n.º 6
0
 /**
  * formAfterInput
  * 
  * @param CakeEvent $event
  * @return string
  */
 public function formAfterInput(CakeEvent $event)
 {
     if (!BcUtil::isAdminSystem()) {
         return $event->data['out'];
     }
     $View = $event->subject();
     if (!in_array($View->request->params['controller'], $this->targetController)) {
         return $event->data['out'];
     }
     if (!in_array($View->request->params['action'], $this->targetAction)) {
         return $event->data['out'];
     }
     if (!isset($View->request->data['KeywordConfig'])) {
         return $event->data['out'];
     }
     if (!$View->request->data['KeywordConfig']['status']) {
         return $event->data['out'];
     }
     // 固定ページ:入力欄の下にキーワード入力欄を表示する
     if ($event->data['fieldName'] == 'Page.description') {
         $event->data['out'] = $event->data['out'] . $View->element('Keyword.keyword_form');
     }
     // ブログ記事:記事タイトル入力欄の下にキーワード入力欄を表示する
     if ($event->data['fieldName'] == 'BlogPost.name') {
         $event->data['out'] = $event->data['out'] . $View->element('Keyword.keyword_form');
     }
     return $event->data['out'];
 }
Ejemplo n.º 7
0
 /**
  * Checks whether the response was cached and set the body accordingly.
  *
  * @param CakeEvent $event containing the request and response object
  * @return CakeResponse with cached content if found, null otherwise
  */
 public function beforeDispatch(CakeEvent $event)
 {
     if (Configure::read('Cache.check') !== true) {
         return;
     }
     $path = $event->data['request']->here();
     if ($path === '/') {
         $path = 'home';
     }
     $prefix = Configure::read('Cache.viewPrefix');
     if ($prefix) {
         $path = $prefix . '_' . $path;
     }
     $path = strtolower(Inflector::slug($path));
     $filename = CACHE . 'views' . DS . $path . '.php';
     if (!file_exists($filename)) {
         $filename = CACHE . 'views' . DS . $path . '_index.php';
     }
     if (file_exists($filename)) {
         $controller = null;
         $view = new View($controller);
         $result = $view->renderCache($filename, microtime(true));
         if ($result !== false) {
             $event->stopPropagation();
             $event->data['response']->body($result);
             return $event->data['response'];
         }
     }
 }
 public function beforeDispatch(CakeEvent $event)
 {
     $MaintenanceMode = Configure::read('MaintenanceMode');
     /* Not in maintenance mode*/
     if (!$MaintenanceMode['enabled']) {
         return;
     }
     /* Allow access from following IPS*/
     if (!empty($MaintenanceMode['ip_filters'])) {
         if (!is_array($MaintenanceMode['ip_filters'])) {
             $ips = array($MaintenanceMode['ip_filters']);
         } else {
             $ips = $MaintenanceMode['ip_filters'];
         }
         $userIP = $this->_getUserIpAddr();
         foreach ($ips as $ip) {
             if ($this->_compareIp($userIP, $ip)) {
                 return;
             }
         }
     }
     $statusCode = 503;
     $body = 'Currently undergoing maintenance';
     if (!empty($MaintenanceMode['code'])) {
         $statusCode = $MaintenanceMode['code'];
     }
     if (!empty($MaintenanceMode['view']['template'])) {
         $View = $this->_getView();
         $body = $View->render($MaintenanceMode['view']['template'], $MaintenanceMode['view']['layout']);
     }
     $event->data['response']->statusCode($statusCode);
     $event->data['response']->body($body);
     $event->stopPropagation();
     return $event->data['response'];
 }
Ejemplo n.º 9
0
 /**
  * Tests the event propagation stopping property
  *
  * @return void
  * @triggers fake.event
  */
 public function testPropagation()
 {
     $event = new CakeEvent('fake.event');
     $this->assertFalse($event->isStopped());
     $event->stopPropagation();
     $this->assertTrue($event->isStopped());
 }
 /**
  * After Render
  * 
  * @param CakeEvent $event
  */
 public function afterRender(CakeEvent $event)
 {
     if (BcUtil::isAdminSystem()) {
         return;
     }
     $View = $event->subject();
     $this->_execShortCode($View);
 }
 /**
  * AuthController onLogin
  * @param CakeEvent $event
  */
 public function onLogin($event)
 {
     $this->log(__("User '%s' just logged in", $event->data['username']), 'auth');
     //Write LastLogin Date
     $event->subject()->BackendUser->id = $event->data['id'];
     $event->subject()->BackendUser->saveField('last_login', date("Y-m-d H:i:s"));
     //return $redirectUri;
 }
 /**
  * 拡張BlogHelperを呼び出しに追加
  *
  */
 public function blogBlogBeforeRender(CakeEvent $event)
 {
     $path = App::pluginPath('ExHelper');
     // ヘルパーのパスを追加
     App::build(array('View/Helper' => array($path . 'View' . DS . 'Helper' . DS)), APP::APPEND);
     $Controller = $event->subject();
     $Controller->helpers[] = 'ExBlog';
 }
Ejemplo n.º 13
0
 /**
  * Start the keep alive timer when the first client subscribes
  *
  * @param CakeEvent $event
  */
 public function onSubscribeNewTopic(CakeEvent $event)
 {
     if (Configure::read('Ratchet.Connection.keepaliveInterval') > 0) {
         $this->__timer = $this->__loop->addPeriodicTimer(Configure::read('Ratchet.Connection.keepaliveInterval'), function () use($event) {
             $event->subject()->broadcast('Rachet.connection.keepAlive', ['ping']);
         });
         $event->subject()->broadcast('Rachet.connection.keepAlive', ['ping']);
     }
 }
Ejemplo n.º 14
0
 /**
  * Test event listener for before create comment
  *
  * @param CakeEvent $event
  * @return mixed
  */
 public function handleAfterCreateComment(CakeEvent $event)
 {
     $data = $event->data;
     $model = $event->subject();
     $comment = $model->Comment->read(null, $data['Comment']['id']);
     $comment['Comment']['body'] = 'Changed in afterComment!';
     $model->Comment->save($comment);
     return $data;
 }
 function blogBlogStartup(CakeEvent $event)
 {
     $Controller = $event->subject();
     if (!isset($Controller->contentId) || $Controller->contentId != Configure::read('BlogShare.contentId')) {
         return;
     }
     $dbConfigName = Configure::read('BlogShare.dbConfigName');
     $Controller->BlogPost->setDataSource($dbConfigName);
     $Controller->BlogPost->BlogCategory->setDataSource($dbConfigName);
     $Controller->BlogPost->BlogTag->setDataSource($dbConfigName);
 }
 public function pageBeforeSave(CakeEvent $event)
 {
     $Page = $event->subject();
     $tmhkConverter = new TmhkConverter();
     $targetColums = array('title', 'contents', 'draft');
     foreach ($Page->data['Page'] as $k => $v) {
         if (in_array($k, $targetColums) && is_string($v)) {
             $Page->data['Page'][$k] = $tmhkConverter->convert($v);
         }
     }
     return true;
 }
Ejemplo n.º 17
0
 public function sendResetPasswordEmail(CakeEvent $event)
 {
     $setting = ClassRegistry::init('Setting');
     $settings = $setting->find('first', array('fields' => array('Setting.enable_mail_notification')));
     $mail_notifications_enabled = $settings['Setting']['enable_mail_notification'];
     if ($mail_notifications_enabled) {
         $event_data = $event->subject();
         $user_email = $event_data['email'];
         $token = $event_data['token'];
         $email = new CakeEmail('default');
         $email->to($user_email)->subject(__('Forgot your password?'))->emailFormat('html')->template('sendToken')->viewVars(compact('token'))->send();
     }
 }
 /**
  * ブログ記事検索直前イベント
  * 
  * @param CakeEvent $event
  * @return boolean
  */
 public function blogBlogPostBeforeFind(CakeEvent $event)
 {
     $query = $event->data[0];
     $BlogPost = $event->subject();
     if (!isset($query['conditions']['BlogPost.blog_content_id']) || $query['conditions']['BlogPost.blog_content_id'] != Configure::read('BlogShare.contentId')) {
         return true;
     }
     $dbConfigName = Configure::read('BlogShare.dbConfigName');
     $BlogPost->setDataSource($dbConfigName);
     $BlogPost->BlogCategory->setDataSource($dbConfigName);
     $BlogPost->BlogTag->setDataSource($dbConfigName);
     return true;
 }
 public function calculateTotals(CakeEvent $Event)
 {
     $Model = $Event->subject();
     $cartData = $Event->data['cartData'];
     $cartData[$Model->alias]['total'] = 0.0;
     if (!empty($cartData['CartsItem'])) {
         foreach ($cartData['CartsItem'] as $key => $item) {
             $cartData['CartsItem'][$key]['total'] = (double) $item['quantity'] * (double) $item['price'];
             $cartData[$Model->alias]['total'] += (double) $cartData['CartsItem'][$key]['total'];
         }
     }
     return $cartData;
 }
Ejemplo n.º 20
0
 /**
  * Put webmaster tools config on header
  *
  * @param CakeEvent $event Represents the transport class of events across the system.
  *
  * @return string
  */
 public function putWebmasterToolsConfigOnHeader(CakeEvent $event)
 {
     $router = Router::getParams();
     if ($router['controller'] == 'posts' && $router['action'] == 'index') {
         $meta = [];
         if (Configure::check('HuradSeo')) {
             $verification = Configure::read('HuradSeo.google_webmaster_verification');
             if (Configure::check('HuradSeo.google_webmaster_verification') && !empty($verification)) {
                 $meta[] = $event->subject()->Html->meta(['name' => 'google-site-verification', 'content' => $verification]);
             }
         }
         echo implode("\n", $meta);
     }
 }
Ejemplo n.º 21
0
 /**
  * blogBlogPostBeforeRender
  * 
  * @param CakeEvent $event
  */
 public function blogBlogPostsBeforeRender(CakeEvent $event)
 {
     if (!BcUtil::isAdminSystem()) {
         return;
     }
     $View = $event->subject();
     if (in_array($View->request->params['action'], $this->targetAction)) {
         $this->setUpModel();
         $data = $this->KeywordConfigModel->find('first', array('conditions' => array('KeywordConfig.model' => 'BlogContent', 'KeywordConfig.content_id' => $View->viewVars['blogContent']['BlogContent']['id'])));
         if ($data) {
             $View->request->data['KeywordConfig'] = $data['KeywordConfig'];
         }
     }
 }
 /**
  * Contents After Move
  * 
  * テンプレートの移動が目的
  * 
  * @param CakeEvent $event
  */
 public function contentsAfterMove(CakeEvent $event)
 {
     if ($event->data['data']['Content']['type'] != 'Page') {
         return;
     }
     if (empty($event->data['data']['Content']['entity_id'])) {
         $Controller = $event->subject();
         $entityId = $Controller->Content->field('entity_id', ['Content.id' => $event->data['data']['Content']['id']]);
     } else {
         $entityId = $event->data['data']['Content']['entity_id'];
     }
     $data = $this->Page->find('first', ['conditions' => ['Page.id' => $entityId], 'recursive' => 0]);
     $this->Page->oldPath = $this->oldPath;
     $this->Page->createPageTemplate($data);
 }
Ejemplo n.º 23
0
 /**
  * afterLogin
  *
  * @return bool
  */
 public function afterLogin(CakeEvent $event)
 {
     if (!$this->Auth->user('confirm_email')) {
         return false;
     }
     $request = $event->subject()->request;
     $settings = $this->settings;
     if (!empty($request->data[$settings['userModel']][$settings['field']])) {
         unset($request->data[$settings['userModel']][$settings['field']]);
         if (!$this->Cookie->check($settings['key'])) {
             $this->Cookie->write($settings['key'], $request->data, true, $settings['expire']);
         }
     }
     return true;
 }
Ejemplo n.º 24
0
 /**
  * References the ReactPHP eventloop for later use
  *
  * @param CakeEvent $event
  */
 public function construct(CakeEvent $event)
 {
     if (!function_exists('pcntl_signal')) {
         $event->subject()->getShell()->out('<warning>Your configuration doesn\'t seem to support \'ext-pcntl\'. It is highly recomended that you install and configure it as it provides OS signaling support!</warning>');
     } elseif (!class_exists('MKraemer\\ReactPCNTL\\PCNTL')) {
         $event->subject()->getShell()->out('<warning>PCNTL support found but you didn\'t install mkraemer/react-pcntl!</warning>');
     } else {
         $pcntl = new MKraemer\ReactPCNTL\PCNTL($event->data['loop']);
         $pcntl->on(SIGTERM, function () use($event) {
             $event->data['loop']->stop();
         });
         $pcntl->on(SIGINT, function () use($event) {
             $event->data['loop']->stop();
         });
     }
 }
 public function mailMailBeforeRender(CakeEvent $event)
 {
     $Controller = $event->subject();
     App::uses('AuthComponent', 'Controller/Component');
     $user = AuthComponent::user();
     if ($user) {
         foreach ($Controller->viewVars['mailFields'] as $key => $field) {
             if ($field['MailField']['field_name'] == 'name') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['name'];
             }
             if ($field['MailField']['field_name'] == 'name_1') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['name_1'];
             }
             if ($field['MailField']['field_name'] == 'name_2') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['name_2'];
             }
             if ($field['MailField']['field_name'] == 'name_kana_1') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['name_kana_1'];
             }
             if ($field['MailField']['field_name'] == 'name_kana_2') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['name_kana_2'];
             }
             if ($field['MailField']['field_name'] == 'sex') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['sex'];
             }
             if ($field['MailField']['field_name'] == 'email_1') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['email'];
             }
             if ($field['MailField']['field_name'] == 'email_2') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['email'];
             }
             if ($field['MailField']['field_name'] == 'tel') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['tel'];
             }
             if ($field['MailField']['field_name'] == 'tel_1') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['tel_1'];
             }
             if ($field['MailField']['field_name'] == 'tel_2') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['tel_2'];
             }
             if ($field['MailField']['field_name'] == 'tel_3') {
                 $Controller->viewVars['mailFields'][$key]['MailField']['options'] = 'value|' . $user['tel_3'];
             }
         }
     }
 }
Ejemplo n.º 26
0
/**
 * Checks if request is for a compiled asset, otherwise skip any operation
 *
 * @param CakeEvent $event containing the request and response object
 * @throws NotFoundException
 * @return CakeResponse if the client is requesting a recognized asset, null otherwise
 */
	public function beforeDispatch(CakeEvent $event) {
		$url = $event->data['request']->url;
		$Config = $this->_getConfig();
		$production = !Configure::read('debug');
		if ($production && !$Config->general('alwaysEnableController')) {
			return;
		}

		$build = $this->_getBuild($url);
		if ($build === false) {
			return;
		}

		if (isset($event->data['request']->query['theme'])) {
			$Config->theme($event->data['request']->query['theme']);
		}

		// Dynamically defined build file. Disabled in production for
		// hopefully obvious reasons.
		if ($Config->files($build) === array()) {
			$files = array();
			if (isset($event->data['request']->query['file'])) {
				$files = $event->data['request']->query['file'];
			}
			$Config->files($build, $files);
		}

		try {
			$Compiler = new AssetCompiler($Config);
			$mtime = $Compiler->getLastModified($build);
			$event->data['response']->modified($mtime);
			if ($event->data['response']->checkNotModified($event->data['request'])) {
				$event->stopPropagation();
				return $event->data['response'];
			}
			$contents = $Compiler->generate($build);
		} catch (Exception $e) {
			throw new NotFoundException($e->getMessage());
		}

		$event->data['response']->type($Config->getExt($build));
		$event->data['response']->body($contents);
		$event->stopPropagation();
		return $event->data['response'];
	}
 /**
  * startup
  *
  * @param CakeEvent $event
  * @return void
  * @access public
  */
 public function contentsStartup(CakeEvent $event)
 {
     $Controller = $event->subject();
     if ($Controller->request->action != 'search') {
         return;
     }
     $SuggestConfig = ClassRegistry::init('Suggest.SuggestConfig');
     $suggestConfigs = $SuggestConfig->findExpanded();
     $excludeKeywords = array();
     if ($suggestConfigs['exclude_keywords']) {
         $excludeKeywords = explode(',', $suggestConfigs['exclude_keywords']);
     }
     // 検索キーワードを複合キーワードとして3つまで保存する
     $query = mb_convert_kana(strtolower($Controller->params['url']['q']), 'a', Configure::read('App.encoding'));
     $keyword = str_replace(' ', ' ', $query);
     $keyword = explode(' ', $keyword);
     $save = true;
     $_keyword = array();
     foreach ($keyword as $key => $value) {
         if (in_array($value, $excludeKeywords)) {
             $save = false;
             break;
         } elseif ($key < 3) {
             $_keyword[$key] = $keyword[$key];
         } else {
             break;
         }
     }
     if ($save) {
         $keyword = implode(' ', $_keyword);
         $conditions = array('SuggestKeyword.name' => $keyword);
         $SuggestKeyword = ClassRegistry::init('Suggest.SuggestKeyword');
         $data = $SuggestKeyword->find('first', array('fields' => array('SuggestKeyword.id', 'SuggestKeyword.views'), 'conditions' => $conditions));
         if (!$data) {
             $data['SuggestKeyword']['name'] = $keyword;
             $data['SuggestKeyword']['views'] = 1;
             $SuggestKeyword->create($data);
         } else {
             $data['SuggestKeyword']['views']++;
             $SuggestKeyword->set($data);
         }
         $SuggestKeyword->save();
     }
 }
Ejemplo n.º 28
0
 public function beforeDispatch(CakeEvent $event)
 {
     if (!preg_match("/media\\/router\\/index\\//i", $event->data['request']->url)) {
         return;
     }
     $event->stopPropagation();
     $requestData = $event->data['request']->params;
     list($type, $id, $size, $filename) = $requestData['pass'];
     App::uses('MediaPath', 'Media.Vendor');
     $this->PHMedia = new MediaPath();
     $fname = $this->PHMedia->getFileName($type, $id, $size, $filename);
     $aFName = $this->PHMedia->getFileInfo($filename);
     $response = $event->data['response'];
     if (!file_exists($fname)) {
         $this->_processMedia($requestData['pass'], $fname, $aFName);
     }
     $this->_deliverMedia($response, $fname, $aFName);
     return $response;
 }
 /**
  * _buildPath
  *
  * @param CakeEvent $Event
  * @return array
  */
 protected function _buildPath(CakeEvent $Event)
 {
     $Model = $Event->subject();
     $record = $Model->data[$Model->alias];
     $adapterConfig = $this->getAdapterconfig($record['adapter']);
     $id = $record[$Model->primaryKey];
     $path = $Model->fsPath('files' . DS . $record['model'], $id);
     $path = '/' . str_replace('\\', '/', $path);
     if ($this->options['preserveFilename'] === false) {
         $filename = $Model->stripUuid($id);
         if ($this->options['preserveExtension'] === true && !empty($record['extension'])) {
             $filename .= '.' . $record['extension'];
         }
     } else {
         $filename = $record['filename'];
     }
     $combined = $path . $filename;
     $url = 'https://' . $adapterConfig['adapterOptions'][1] . '.s3.amazonaws.com' . $combined;
     return array('filename' => $filename, 'path' => $path, 'combined' => $path . $filename, 'url' => $url);
 }
Ejemplo n.º 30
0
 /**
  * Handle OPTIONS requests
  *
  * If it's an options request, loop on the configured http verbs and add
  * an Access-Control-Allow-Methods header with the verbs the application
  * is configured to respond to.
  *
  * @param CakeEvent $event
  * @return CakeResponse|null
  */
 public function beforeDispatch(CakeEvent $event)
 {
     $request = $event->data['request'];
     if (!$request->is('options')) {
         return;
     }
     $event->stopPropagation();
     $url = $request->url;
     $verbs = Configure::read('Crud.HttpMethodFilter.verbs') ?: $this->defaultVerbs;
     $allowedMethods = array();
     foreach ($verbs as $verb) {
         $_SERVER['REQUEST_METHOD'] = $verb;
         if (Router::parse('/' . $url)) {
             $allowedMethods[] = $verb;
         }
     }
     $_SERVER['REQUEST_METHOD'] = 'OPTIONS';
     $response = $event->data['response'];
     $response->header('Access-Control-Allow-Methods', implode(', ', $allowedMethods));
     return $response;
 }