/** * This is the default 'index' action that is invoked * when an action is not explicitly requested by users. */ public function actionIndexing() { ini_set('max_execution_time', 0); ob_start(); $index = new Zend_Search_Lucene(Yii::getPathOfAlias($this->_indexFilesPath), true); $plugin = OmmuPlugins::model()->findAll(array('select' => 'folder, model', 'condition' => 'actived= :actived AND search= :search', 'params' => array(':actived' => 1, ':search' => 1))); if ($plugin != null) { $model = $data = ''; foreach ($plugin as $key => $val) { $model = $val->model; Yii::import('application.modules.' . $val->folder . '.models.*'); $data = new $model(); $data->searchIndexing($index); } } echo 'Lucene index created'; $index->commit(); $this->redirect(Yii::app()->createUrl('site/index')); ob_end_flush(); }
/** * Set default columns to display */ protected function afterConstruct() { if (count($this->defaultColumns) == 0) { $this->defaultColumns[] = array('header' => 'ID', 'name' => 'phrase_id', 'value' => '$data->phrase_id', 'htmlOptions' => array('class' => 'center')); $this->defaultColumns[] = array('name' => 'plugin_id', 'value' => '$data->plugin->name', 'htmlOptions' => array('class' => 'center'), 'filter' => OmmuPlugins::getPlugin(0, 'id'), 'type' => 'raw'); $this->defaultColumns[] = 'en_us'; $this->defaultColumns[] = 'id'; $this->defaultColumns[] = 'location'; } parent::afterConstruct(); }
/** * Set default columns to display */ protected function afterConstruct() { if (count($this->defaultColumns) == 0) { $this->defaultColumns[] = array('header' => 'No', 'value' => '$this->grid->dataProvider->pagination->currentPage*$this->grid->dataProvider->pagination->pageSize + $row+1'); $this->defaultColumns[] = array('name' => 'plugin_id', 'value' => '$data->plugin->name', 'htmlOptions' => array('class' => 'center'), 'filter' => OmmuPlugins::getPlugin(0, 'id'), 'type' => 'raw'); $this->defaultColumns[] = array('name' => 'template_key', 'value' => '$data->template_key'); //$this->defaultColumns[] = 'template'; $this->defaultColumns[] = 'variable'; $this->defaultColumns[] = array('name' => 'creation_search', 'value' => '$data->creation_relation->displayname'); $this->defaultColumns[] = array('name' => 'creation_date', 'value' => 'Utility::dateFormat($data->creation_date)', 'htmlOptions' => array('class' => 'center'), 'filter' => Yii::app()->controller->widget('zii.widgets.jui.CJuiDatePicker', array('model' => $this, 'attribute' => 'creation_date', 'language' => 'ja', 'i18nScriptFile' => 'jquery.ui.datepicker-en.js', 'htmlOptions' => array('id' => 'creation_date_filter'), 'options' => array('showOn' => 'focus', 'dateFormat' => 'dd-mm-yy', 'showOtherMonths' => true, 'selectOtherMonths' => true, 'changeMonth' => true, 'changeYear' => true, 'showButtonPanel' => true)), true)); } parent::afterConstruct(); }
/** * Initialize * * load some custom components here, for example * theme, url manager, or config from database Alhamdulillah :) */ public function init() { /** * set default themes */ $theme = $this->getDefaultTheme(); if (isset($_GET['theme'])) { $theme = trim($_GET['theme']); } Yii::app()->theme = $theme; /** * controllerMap */ $themePath = Yii::getPathOfAlias('webroot.themes.' . $theme) . DS . $theme . '.yaml'; $arrayThemeSpyc = Spyc::YAMLLoad($themePath); $controllerSpyc = $arrayThemeSpyc['controller']; if (!empty($controllerSpyc)) { foreach ($controllerSpyc as $key => $val) { $controllerMap[$key] = 'webroot.themes.' . $theme . '.controllers.' . $val; } Yii::app()->controllerMap = $controllerMap; } /** * set url manager */ $rules = array('' => 'site/index', '<action:(login|logout)>' => 'site/<action>', '<id:\\d+>-<t:[\\w\\-]+>-<a:[\\w\\-]+>' => 'page/view', '<id:\\d+>-<t:[\\w\\-]+>' => 'page/view', '<module:\\w+>/<controller:\\w+>/<t:[\\w\\-]+>-<id:\\d+>-<category:\\d+>' => '<module>/<controller>/index', '<module:\\w+>/<controller:\\w+>/<t:[\\w\\-]+>-<category:\\d+>' => '<module>/<controller>/index', '<module:\\w+>/<controller:\\w+>/<t:[\\w\\-]+>-<id:\\d+>' => '<module>/<controller>/index', '<module:\\w+>/<controller:\\w+>/<id:\\d+>' => '<module>/<controller>/index', '<module:\\w+>/<controller:\\w+>' => '<module>/<controller>/index', '<module:\\w+>/<controller:\\w+>/view/<t:[\\w\\-]+>-<id:\\d+>-<photo:\\d+>' => '<module>/<controller>/view', '<module:\\w+>/<controller:\\w+>/view/<t:[\\w\\-]+>-<id:\\d+>' => '<module>/<controller>/view', '<module:\\w+>/<controller:\\w+>/<action:\\w+>/<t:[\\w\\-]+>-<id:\\d+>' => '<module>/<controller>/<action>', '<module:\\w+>/<controller:\\w+>/<action:\\w+>/<id:\\d+>' => '<module>/<controller>/<action>', '<module:\\w+>/<controller:\\w+>/<action:\\w+>' => '<module>/<controller>/<action>', '<module:\\w+>/<controller:\\w+>' => '<module>/<controller>', '<controller:\\w+>/<t:[\\w\\-]+>-<id:\\d+>-<category:\\d+>' => '<controller>/index', '<controller:\\w+>/<t:[\\w\\-]+>-<category:\\d+>' => '<controller>/index', '<controller:\\w+>/<t:[\\w\\-]+>-<id:\\d+>' => '<controller>/index', '<controller:\\w+>/<id:\\d+>' => '<controller>/index', '<controller:\\w+>' => '<controller>/index', '<controller:\\w+>/view/<t:[\\w\\-]+>-<id:\\d+>-<photo:\\d+>' => '<controller>/view', '<controller:\\w+>/view/<t:[\\w\\-]+>-<id:\\d+>' => '<controller>/view', '<controller:\\w+>/<action:\\w+>/<t:[\\w\\-]+>-<id:\\d+>' => '<controller>/<action>', '<controller:\\w+>/<action:\\w+>/<id:\\d+>' => '<controller>/<action>', '<controller:\\w+>/<action:\\w+>' => '<controller>/<action>', '<controller:\\w+>' => '<controller>'); /** * Set default controller for homepage, it can be controller, action or module * example: * controller: 'site' * controller from module: 'pose/site/index'. */ $default = OmmuPlugins::model()->findByAttributes(array('defaults' => 1), array('select' => 'folder')); if ($default == null || $default->folder == '-' || $default->actived == '2') { $rules[''] = 'site/index'; } else { $url = $default->folder != '-' ? $default->folder : 'site/index'; Yii::app()->defaultController = trim($url); $rules[''] = trim($url); } /** * Split rules into 2 part and then insert url from tabel between them. * and then merge all array back to $rules. */ $module = OmmuPlugins::model()->findAll(array('select' => 'folder', 'condition' => 'actived != 0')); $moduleRules = array(); $sliceRules = $this->getRulePos($rules); if ($module !== null) { foreach ($module as $key => $val) { $moduleRules[$val->folder] = $val->folder; } } $rules = array_merge($sliceRules['before'], $moduleRules, $sliceRules['after']); Yii::app()->setComponents(array('urlManager' => array('urlFormat' => 'path', 'showScriptName' => false, 'rules' => $rules))); Yii::setPathOfAlias('modules', Yii::app()->basePath . DIRECTORY_SEPARATOR . 'modules'); /** * Registers meta tags declared * google discoverability * google plus * facebook opengraph * twitter */ $meta = OmmuMeta::model()->findByPk(1); $images = $meta->meta_image != '' ? $meta->meta_image : 'meta_default.png'; $metaImages = Utility::getProtocol() . '://' . Yii::app()->request->serverName . Yii::app()->request->baseUrl . '/public/' . $images; // Google Discoverability mata tags $point = explode(',', $meta->office_location); // Facebook mata tags $arrayFacebookGlobal = array('og:type' => $meta->facebook_type == 1 ? 'profile' : 'website', 'og:title' => 'MY_WEBSITE_NAME', 'og:description' => 'MY_WEBSITE_DESCRIPTION', 'og:image' => $metaImages); if ($meta->facebook_sitename != '') { $arrayFacebookGlobal['og:site_name'] = $meta->facebook_sitename; } if ($meta->facebook_see_also != '') { $arrayFacebookGlobal['og:see_also'] = $meta->facebook_see_also; } if ($meta->facebook_admins != '') { $arrayFacebookGlobal['fb:admins'] = $meta->facebook_admins; } if ($meta->facebook_type == 1) { $arrayFacebook = array('profile:first_name' => $meta->facebook_profile_firstname, 'profile:last_name' => $meta->facebook_profile_lastname, 'profile:username' => $meta->facebook_profile_username); } else { $arrayFacebook = array(); } // Twitter mata tags if ($meta->twitter_card == 1) { $cardType = 'summary'; $arrayTwitter = array(); } else { if ($meta->twitter_card == 2) { $cardType = 'summary_large_image'; $arrayTwitter = array(); } else { if ($meta->twitter_card == 3) { $cardType = 'photo'; $arrayTwitter = array('twitter:image:width' => $meta->twitter_photo_width, 'twitter:image:height' => $meta->twitter_photo_height); } else { $cardType = 'app'; if ($meta->twitter_country != '') { $arrayTwitter['twitter:app:country'] = $meta->twitter_country; } if ($meta->twitter_iphone_name != '') { $arrayTwitter['twitter:app:name:iphone'] = $meta->twitter_iphone_name; } if ($meta->twitter_iphone_id != '') { $arrayTwitter['twitter:app:id:iphone'] = $meta->twitter_iphone_id; } if ($meta->twitter_iphone_url != '') { $arrayTwitter['twitter:app:url:iphone'] = $meta->twitter_iphone_url; } if ($meta->twitter_ipad_name != '') { $arrayTwitter['twitter:app:name:ipad'] = $meta->twitter_ipad_name; } if ($meta->twitter_ipad_id != '') { $arrayTwitter['twitter:app:id:ipad'] = $meta->twitter_ipad_id; } if ($meta->twitter_ipad_url != '') { $arrayTwitter['twitter:app:url:ipad'] = $meta->twitter_ipad_url; } if ($meta->twitter_googleplay_name != '') { $arrayTwitter['twitter:app:name:googleplay'] = $meta->twitter_googleplay_name; } if ($meta->twitter_googleplay_id != '') { $arrayTwitter['twitter:app:id:googleplay'] = $meta->twitter_googleplay_id; } if ($meta->twitter_googleplay_url != '') { $arrayTwitter['twitter:app:url:googleplay'] = $meta->twitter_googleplay_url; } if (empty($arrayTwitter)) { $arrayTwitter = array(); } } } } $arrayTwitterGlobal = array('twitter:card' => $cardType, 'twitter:site' => $meta->twitter_site, 'twitter:title' => 'MY_WEBSITE_NAME', 'twitter:description' => 'MY_WEBSITE_DESCRIPTION', 'twitter:image' => $metaImages); if (in_array($meta->twitter_card, array(2))) { $arrayTwitterGlobal['twitter:creator'] = $meta->twitter_creator; } if ($meta->meta_image_alt != '' && in_array($meta->meta_image_alt, array(1, 2))) { $arrayTwitterGlobal['twitter:image:alt'] = $meta->meta_image_alt; } /** * Registe Meta Tags */ Yii::app()->setComponents(array('meta' => array('class' => 'application.components.plugin.MetaTags', 'googleOwnerTags' => array('place:location:latitude' => $point[0], 'place:location:longitude' => $point[1], 'business:contact_data:street_address' => $meta->office_place . ', ' . $meta->office_village . ', ' . $meta->office_district, 'business:contact_data:country_name' => $meta->view_meta->country, 'business:contact_data:locality' => $meta->view_meta->city, 'business:contact_data:region' => $meta->office_district, 'business:contact_data:postal_code' => $meta->office_zipcode, 'business:contact_data:email' => $meta->office_email, 'business:contact_data:phone_number' => $meta->office_phone, 'business:contact_data:fax_number' => $meta->office_fax, 'business:contact_data:website' => $meta->office_website), 'googlePlusTags' => array('name' => 'MY_WEBSITE_NAME', 'description' => 'MY_WEBSITE_DESCRIPTION', 'image' => $metaImages), 'facebookTags' => CMap::mergeArray($arrayFacebookGlobal, $arrayFacebook), 'twitterTags' => CMap::mergeArray($arrayTwitterGlobal, $arrayTwitter)))); }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = OmmuPlugins::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, Yii::t('phrase', 'The requested page does not exist.')); } return $model; }
/** * Create additional table inside module(if any) * * @param string $moduleName * @return void. */ public function installModule($id, $moduleName) { $module = OmmuPlugins::model()->findByPk($id); $config = $this->getModuleConfig($moduleName); if ($config != null) { $module->code = trim($config['code']); $module->model = trim($config['global_model']); $module->name = trim($config['name']); $module->desc = trim($config['description']); $module->version = trim($config['version']); $module->created_date = date('Y-m-d H:i:s'); if ($module->save()) { $tableName = $config['db_table_name']; $fileName = trim($config['db_sql_filename']); if ($tableName != null && $fileName != '') { $sqlPath = Yii::getPathOfAlias('application.modules.' . $moduleName) . DS . 'assets' . DS . $fileName; $tables = Yii::app()->db->createCommand('SHOW FULL TABLES WHERE table_type = "BASE TABLE"')->queryColumn(); if (!in_array($tableName, $tables)) { $sql = file_get_contents($sqlPath); Yii::app()->db->createCommand($sql)->execute(); } } } } }
<?php echo $form->textField($model, 'template_key', array('size' => 32, 'maxlength' => 32)); ?> <?php echo $form->error($model, 'template_key'); ?> </div> </div> <div class="clearfix"> <?php echo $form->labelEx($model, 'plugin_id'); ?> <div class="desc"> <?php echo $form->dropDownList($model, 'plugin_id', OmmuPlugins::getPlugin(null, 'id')); ?> <?php echo $form->error($model, 'plugin_id'); ?> </div> </div> <div class="clearfix"> <?php echo $form->labelEx($model, 'template'); ?> <div class="desc"> <?php echo $form->textArea($model, 'template', array('rows' => 6, 'cols' => 50)); ?>