/** * * @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]); }
/** * 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; }
/** * 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; }
/** * * @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(); }
/** * Get extension query. * @return ExtensionQuery */ public function getExtension() { return $this->hasOne(Extension::className(), ['guid' => 'extension_guid']); }
/** * * @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(); }