コード例 #1
0
ファイル: SnippetForm.php プロジェクト: jc21/snippets-site
 /**
  * Saves the Form
  *
  * @param  \yii\db\ActiveRecord  $member
  * @return bool
  */
 public function save($member)
 {
     // Find language
     $language = Language::find()->where(['id' => $this->languageId])->limit(1)->one();
     if (!$language) {
         $this->addError('languageId', 'Could not find Language');
         return false;
     }
     $slug = Util::generateUrlSafeSlug($this->name);
     $iteration = 0;
     // Generate a unique slug
     do {
         $exists = Snippet::find()->where(['slug' => $slug])->count();
         if ($exists) {
             $iteration++;
             $slug = Util::generateUrlSafeSlug($this->name . '-' . $iteration);
         }
     } while ($exists);
     // TODO: strip <script tags from description
     $snippet = new Snippet();
     $snippet->memberId = $member->id;
     $snippet->languageId = $language->id;
     $snippet->slug = $slug;
     $snippet->name = $this->name;
     $snippet->description = $this->description;
     $snippet->code = $this->code;
     if ($snippet->save()) {
         return '/snippets/' . $language->slug . '/' . $snippet->slug;
     } else {
         $this->addError('code', 'There was an error saving the Snippet!');
         return false;
     }
 }
コード例 #2
0
ファイル: LanguageHelper.php プロジェクト: tolik505/bl
 /**
  * @param string $code
  *
  * @return bool
  */
 public static function setCurrent($code)
 {
     $language = Language::find()->where(['code' => $code])->one();
     if ($language) {
         self::$current = $language;
         return true;
     }
     return false;
 }
コード例 #3
0
 /**
  * /lists/popular
  *
  * @return string
  */
 public function actionPopular()
 {
     $language = null;
     $languageSlug = $this->request->getQueryParam('languageSlug');
     if ($languageSlug) {
         $language = Language::find()->where(['isHidden' => 0, 'slug' => $languageSlug])->limit(1)->one();
     }
     return $this->render('popular', ['language' => $language, 'list' => PopularSnippets::get($language)]);
 }
コード例 #4
0
 public function init()
 {
     parent::init();
     if ($this->currentLanguage === null) {
         $this->currentLanguage = Language::getCurrent();
     }
     if ($this->allowedLanguages === null) {
         $this->allowedLanguages = Language::find()->where('`id` != :id', [':id' => $this->currentLanguage->id])->all();
     }
     $this->cssClass .= ' dropdown dropdown-language';
     $this->options['class'] = trim($this->cssClass);
 }
コード例 #5
0
 /**
 * Creates data provider instance with search query applied
 *
 * @param array $params
 *
 * @return ActiveDataProvider
 */
 public function search($params)
 {
     $query = Language::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id]);
     $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'code', $this->code]);
     return $dataProvider;
 }
コード例 #6
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Language::find();
     // add conditions that should always apply here
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     // grid filtering conditions
     $query->andFilterWhere(['id' => $this->id, 'default' => $this->default, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]);
     $query->andFilterWhere(['like', 'url_key', $this->url_key])->andFilterWhere(['like', 'local', $this->local])->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'image', $this->image]);
     return $dataProvider;
 }
コード例 #7
0
 /**
  * @param null $url
  * @return array|null|ActiveRecord
  */
 static function getLangByUrl($url = null)
 {
     if ($url === null) {
         return null;
     } else {
         $language = Language::find()->where('url_key = :url_key', [':url_key' => $url])->one();
         if ($language === null) {
             return null;
         } else {
             return $language;
         }
     }
 }
コード例 #8
0
 /**
  * Lists all Language models.
  * @return mixed
  */
 public function actionIndex()
 {
     $dataProvider = new ActiveDataProvider(['query' => Language::find()]);
     return $this->render('index', ['dataProvider' => $dataProvider]);
 }
コード例 #9
0
ファイル: Controller.php プロジェクト: jc21/snippets-site
 /**
  * loadLanguages
  *
  * @return bool
  */
 protected function loadLanguages()
 {
     $cacheKey = Yii::$app->params['cacheKeys']['languages'];
     $languages = $this->cache->get($cacheKey);
     if (!$languages) {
         $languages = [];
         $result = Language::find()->where(['isHidden' => 0])->orderBy('name')->all();
         foreach ($result as $language) {
             if (count($language->snippets)) {
                 $languages[$language->id] = $language->attributes;
                 $languages[$language->id]['count'] = count($language->snippets);
             }
         }
         $this->cache->set($cacheKey, $languages, 600);
     }
     $this->languages = $languages;
 }
コード例 #10
0
ファイル: index.php プロジェクト: jc21/snippets-site
$this->title = 'Create a Snippet';
?>

<p>Here you can submit your snippets for everyone to see. If this is not your code, please be sure to credit those responsible. All fields are required.</p>


<h4>Submission</h4>

<?php 
$form = ActiveForm::begin(['id' => 'snippet-form', 'options' => ['class' => 'form'], 'fieldConfig' => ['inputOptions' => ['class' => 'form-control', 'required' => 'required']]]);
?>

<div class="form-group">
    <label for="languageId">Language</label>
    <?php 
echo Html::activeDropDownList($model, 'languageId', ArrayHelper::map(Language::find()->orderBy('name ASC')->all(), 'id', 'name'), ['class' => 'form-control', 'id' => 'languageId']);
?>
</div>

<?php 
echo $form->field($model, 'name', ['inputOptions' => ['type' => 'text', 'required' => 'required', 'placeholder' => 'Title of your Snippet']]);
?>

<?php 
echo $form->field($model, 'description')->textArea(['rows' => '4', 'placeholder' => 'Github style markdown is allowed', 'required' => 'required']);
?>

<?php 
echo $form->field($model, 'code')->textArea(['rows' => '12', 'placeholder' => '', 'required' => 'required']);
?>
コード例 #11
0
 /**
  * @param  bool  $skipSnippetCheck
  * @return bool
  */
 protected function parseQueryParams($skipSnippetCheck = false)
 {
     $languageSlug = $this->request->getQueryParam('languageSlug');
     $snippetSlug = $this->request->getQueryParam('snippetSlug');
     // Make sure at least language slug is there
     if (!$languageSlug) {
         return $this->goHome();
     }
     // Find the language row
     $this->language = Language::find()->where(['slug' => $languageSlug])->limit(1)->one();
     if (!$this->language) {
         return false;
     }
     // Make sure at least language slug is there
     if (!$snippetSlug) {
         if ($skipSnippetCheck) {
             return true;
         }
         return $this->goHome();
     }
     $this->snippet = Snippet::find()->where(['slug' => $snippetSlug, 'languageId' => $this->language->id])->limit(1)->one();
     if (!$this->snippet && !$skipSnippetCheck) {
         return false;
     }
     return true;
 }
コード例 #12
0
 public function getAllLanguagesAsMappedArray()
 {
     $models = Language::find()->all();
     return ArrayHelper::map($models, 'id', 'name');
 }
コード例 #13
0
ファイル: Lang.php プロジェクト: huynhtuvinh87/cms
 public function init()
 {
     $model = Language::find()->where(['publish' => 1])->one();
     echo $model->name;
 }
コード例 #14
0
ファイル: Language.php プロジェクト: quyettvq/luspel
 public static function getLanguages()
 {
     return Language::find()->where(['is_active' => 1])->all();
 }