Пример #1
0
 /**
  * 
  * @param string[]|\rhoome\models\Extension[]|\rhoone\extension\Extension[] $extension
  * @return type
  */
 public function extension($extension)
 {
     $extension = (array) $extension;
     $guids = [];
     foreach ($extension as $k => $e) {
         if (is_string($e) && !preg_match(Number::GUID_REGEX, $e)) {
             $e = Yii::$app->rhoone->ext->getModel($e);
         }
         if (!is_string($e) || !$e instanceof Extension) {
             unset($extension[$k]);
         }
         $guids[] = $e->guid;
     }
     return $this->leftJoin(Headword::tableName(), '`headword_guid` = ' . Headword::tableName() . '.`guid`')->leftJoin(Extension::tableName(), Headword::tableName() . '.`extension_guid` = ' . Extension::tableName() . '.`guid`')->andWhere(['extension_guid' => $guids]);
 }
Пример #2
0
 /**
  * Load enabled extension(s).
  * If you call this method without any parameter, it will load all enabled extension(s).
  * @param ExtModel|string|null $ext
  * `null` when you want to load all enabled extension(s).
  * `string` or `ExtModel` when you want to load specified extension.
  * @return int Sum of loaded extension(s).
  */
 public function load($ext = null)
 {
     if ($ext !== null && empty($ext)) {
         return 0;
     }
     if ($ext instanceof ExtModel) {
         $id = $ext->id;
         $classname = $ext->classname;
         $config = $ext->config;
         try {
             $this->set($id, new $classname($config));
         } catch (\Exception $ex) {
             Yii::error($ex->getMessage(), __METHOD__);
             return 0;
         }
         return 1;
     }
     if (is_string($ext) && preg_match(Number::GUID_REGEX, $ext)) {
         $ext = ExtModel::findOne($ext);
         if (!$ext) {
             Yii::error("`{$ext}` does not exist.", __METHOD__);
             return 0;
         }
         return $this->load($ext);
     }
     if ($ext === null) {
         $count = 0;
         $exts = ExtModel::find()->enabled()->all();
         if (empty($exts)) {
             return 0;
         }
         foreach ($exts as $ext) {
             $count += $this->load($ext);
         }
         return $count;
     }
     return 0;
 }
Пример #3
0
 /**
  * List all registered extensions.
  * @return int
  */
 public function actionIndex()
 {
     $extensions = Extension::find()->all();
     if (empty($extensions)) {
         echo "<empty list>";
     }
     echo "|";
     echo sprintf("%28s", "Class Name");
     echo "|";
     echo sprintf("%4s", "Enb");
     echo "|";
     echo sprintf("%4s", "Mnp");
     echo "|";
     echo sprintf("%4s", "Dft");
     echo "|";
     echo sprintf("%20s", "Create Time");
     echo "|";
     echo sprintf("%20s", "Update Time");
     echo "|";
     echo "\r\n";
     foreach ($extensions as $extension) {
         echo "|";
         echo sprintf("%28s", $extension->classname);
         echo "|";
         echo sprintf("%4d", $extension->isEnabled);
         echo "|";
         echo sprintf("%4d", $extension->monopolized);
         echo "|";
         echo sprintf("%4d", $extension->default);
         echo "|";
         echo sprintf("%20s", $extension->createdAt);
         echo "|";
         echo sprintf("%20s", $extension->updatedAt);
         echo "|";
         echo "\r\n";
     }
     return 0;
 }
Пример #4
0
 /**
  * 
  * @param string $keyword
  * @return \rhoone\models\Extension[]
  */
 public function match($keyword = "")
 {
     $keyword = new Keyword($keyword);
     $defaults = \rhoone\models\Extension::findAllDefault(true);
     $nonDefaults = [];
     foreach (Yii::$app->rhoone->dic->getSynonyms(null, $keyword->segmented) as $synonym) {
         $nonDefaults[$synonym->extension->guid] = $synonym->extension;
     }
     return array_merge($defaults, $nonDefaults);
     //die();
 }
Пример #5
0
 /**
  * Get extension query.
  * @return ExtensionQuery
  */
 public function getExtension()
 {
     return $this->hasOne(Extension::className(), ['guid' => 'extension_guid']);
 }
Пример #6
0
 /**
  * 
  * @param string|\rhoone\extension\Extension|\rhoone\models\Extension $class
  * @return boolean
  */
 public static function checkRegistered($class)
 {
     if ($class instanceof \rhoone\model\Extension) {
         return \rhoone\models\Extension::find()->guid($class->guid)->exists();
     }
     $extension = null;
     if (is_string($class)) {
         try {
             $extension = static::validate($class);
         } catch (\Exception $ex) {
             return false;
         }
     }
     if ($class instanceof \rhoone\extension\Extension) {
         $extension = $class;
     }
     return \rhoone\models\Extension::find()->where(['classname' => $extension->className()])->exists();
 }