作者:omidoni
项目:yii2-sortable-behavio
public static function bOrderAttr()
{
if (is_null(static::$b_order_attr)) {
static::$b_order_attr = Inflector::camel2id(StringHelper::basename(static::bClass()), '_') . '_ord';
}
return static::$b_order_attr;
}
作者:sadovoja
项目:yii2-image-cutte
public function upload($attribute)
{
$class = \yii\helpers\StringHelper::basename(get_class($this->owner)) . 'Cutter';
if ($uploadImage = UploadedFile::getInstance($this->owner, $attribute)) {
if (!$this->owner->isNewRecord) {
$this->delete($attribute);
}
$cropping = $_POST[$class][$attribute . '-cropping'];
$croppingFileName = md5($uploadImage->name . $this->quality . Json::encode($cropping));
$croppingFileExt = strrchr($uploadImage->name, '.');
$croppingFileDir = substr($croppingFileName, 0, 2);
$croppingFileBasePath = Yii::getAlias($this->basePath) . $this->baseDir;
if (!is_dir($croppingFileBasePath)) {
mkdir($croppingFileBasePath, 0755, true);
}
$croppingFilePath = Yii::getAlias($this->basePath) . $this->baseDir . DIRECTORY_SEPARATOR . $croppingFileDir;
if (!is_dir($croppingFilePath)) {
mkdir($croppingFilePath, 0755, true);
}
$fileSavePath = $croppingFilePath . DIRECTORY_SEPARATOR . $croppingFileName . $croppingFileExt;
$point = new Point($cropping['dataX'], $cropping['dataY']);
$box = new Box($cropping['dataWidth'], $cropping['dataHeight']);
$palette = new \Imagine\Image\Palette\RGB();
$color = $palette->color('fff', 0);
Image::frame($uploadImage->tempName, 0, 'fff', 0)->rotate($cropping['dataRotate'], $color)->crop($point, $box)->save($fileSavePath, ['quality' => $this->quality]);
$this->owner->{$attribute} = $this->baseDir . DIRECTORY_SEPARATOR . $croppingFileDir . DIRECTORY_SEPARATOR . $croppingFileName . $croppingFileExt;
} elseif (isset($_POST[$class][$attribute . '-remove']) && $_POST[$class][$attribute . '-remove']) {
$this->delete($attribute);
} elseif (!empty($_POST[$class][$attribute])) {
$this->owner->{$attribute} = $_POST[$class][$attribute];
} elseif (isset($this->owner->oldAttributes[$attribute])) {
$this->owner->{$attribute} = $this->owner->oldAttributes[$attribute];
}
}
作者:alexsute
项目:yii2-datecontro
/**
* Convert display date for saving to model
*
* @return string JSON encoded HTML output
*/
public function actionConvert()
{
$output = '';
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$post = Yii::$app->request->post();
if (isset($post['displayDate'])) {
$saveFormat = ArrayHelper::getValue($post, 'saveFormat');
$dispFormat = ArrayHelper::getValue($post, 'dispFormat');
$dispTimezone = ArrayHelper::getValue($post, 'dispTimezone');
$saveTimezone = ArrayHelper::getValue($post, 'saveTimezone');
$settings = ArrayHelper::getValue($post, 'settings', []);
// Russian dates ends with \r. - i dont know why
if (StringHelper::endsWith($dispFormat, '.')) {
$dispFormat = substr($dispFormat, 0, strlen($dispFormat) - 4);
$post['displayDate'] = substr($post['displayDate'], 0, strlen($post['displayDate']) - 4);
}
if (ArrayHelper::getValue($post, 'type') != DateControl::FORMAT_DATETIME) {
$dispTimezone = null;
$saveTimezone = null;
}
$date = DateControl::getTimestamp($post['displayDate'], $dispFormat, $dispTimezone, $settings);
if (empty($date) || !$date) {
$value = '';
} elseif ($saveTimezone != null) {
$value = $date->setTimezone(new DateTimeZone($saveTimezone))->format($saveFormat);
} else {
$value = $date->format($saveFormat);
}
return ['status' => 'success', 'output' => $value];
} else {
return ['status' => 'error', 'output' => 'No display date found'];
}
}
作者:just-le
项目:cardgame-seria
/**
* @inheritdoc
*/
public static function tableName()
{
$name = Inflector::camel2id(StringHelper::basename(get_called_class()), '_');
$length = mb_strlen($name, \Yii::$app->charset) - 7;
// - mb_strlen('_record', Yii::$app->charset);
return '{{%' . trim(mb_substr($name, 0, $length, \Yii::$app->charset)) . '}}';
}
作者:Jaaviiee
项目:PrograWe
/**
* @param DOMElement $element
* @param mixed $data
*/
protected function buildXml($element, $data)
{
if (is_object($data)) {
$child = new DOMElement(StringHelper::basename(get_class($data)));
$element->appendChild($child);
if ($data instanceof Arrayable) {
$this->buildXml($child, $data->toArray());
} else {
$array = [];
foreach ($data as $name => $value) {
$array[$name] = $value;
}
$this->buildXml($child, $array);
}
} elseif (is_array($data)) {
foreach ($data as $name => $value) {
if (is_int($name) && is_object($value)) {
$this->buildXml($element, $value);
} elseif (is_array($value) || is_object($value)) {
$child = new DOMElement(is_int($name) ? $this->itemTag : $name);
$element->appendChild($child);
$this->buildXml($child, $value);
} else {
$child = new DOMElement(is_int($name) ? $this->itemTag : $name);
$element->appendChild($child);
$child->appendChild(new DOMText((string) $value));
}
}
} else {
$element->appendChild(new DOMText((string) $data));
}
}
作者:atoumu
项目:yii2-rss-reader-exampl
private function checkForNews()
{
try {
$response = (new Client())->createRequest()->setUrl($this->getCurrentFeed()->url)->send();
if (!$response->isOk) {
throw new \Exception();
}
$rss = simplexml_load_string($response->getContent());
$newItemsCount = 0;
foreach ($rss->channel->item as $item) {
if (!NewModel::findOne(['feed' => $this->getCurrentFeed()->id, 'url' => (string) $item->link])) {
$new = new NewModel();
$new->feed = $this->getCurrentFeed()->id;
$new->published_at = date_create_from_format(\DateTime::RSS, (string) $item->pubDate)->format('Y-m-d H:i:s');
$new->title = (string) $item->title;
if (isset($item->description)) {
$new->short_text = StringHelper::truncate(strip_tags((string) $item->description), 250);
}
$new->url = (string) $item->link;
if ($new->save()) {
$newItemsCount++;
}
}
}
if ($newItemsCount > 0) {
\Yii::$app->session->addFlash('info', \Yii::t('user', 'Get news: ') . $newItemsCount);
$this->clearOldNewsIfNeed();
\Yii::$app->cache->delete($this->getNewsCacheKey());
\Yii::$app->cache->delete($this->getFeedsCacheKey());
}
} catch (Exception $e) {
\Yii::$app->session->addFlash('danger', \Yii::t('user', 'Get news error'));
}
}
作者:beaten-sect0
项目:yii2-db-manage
/**
* @param $path
* @param array $dbInfo
* @param array $restoreOptions
* @return string
*/
public function makeRestoreCommand($path, array $dbInfo, array $restoreOptions)
{
$arguments = [];
if (StringHelper::endsWith($path, '.gz', false)) {
$arguments[] = 'gunzip -c';
$arguments[] = $path;
$arguments[] = '|';
}
if ($this->isWindows()) {
$arguments[] = 'set PGPASSWORD=' . $dbInfo['password'];
$arguments[] = '&';
} else {
$arguments[] = 'PGPASSWORD=' . $dbInfo['password'];
}
// default port
if (empty($dbInfo['port'])) {
$dbInfo['port'] = '5432';
}
$arguments = array_merge($arguments, ['psql', '--host=' . $dbInfo['host'], '--port=' . $dbInfo['port'], '--username=' . $dbInfo['username'], '--no-password']);
if ($restoreOptions['preset']) {
$arguments[] = trim($restoreOptions['presetData']);
}
$arguments[] = $dbInfo['dbName'];
if (!StringHelper::endsWith($path, '.gz', false)) {
$arguments[] = '<';
$arguments[] = $path;
}
return implode(' ', $arguments);
}
作者:13621644
项目:yii2-apido
/**
* @param \phpDocumentor\Reflection\BaseReflector $reflector
* @param Context $context
* @param array $config
*/
public function __construct($reflector = null, $context = null, $config = [])
{
parent::__construct($config);
if ($reflector === null) {
return;
}
// base properties
$this->name = ltrim($reflector->getName(), '\\');
$this->startLine = $reflector->getNode()->getAttribute('startLine');
$this->endLine = $reflector->getNode()->getAttribute('endLine');
$docblock = $reflector->getDocBlock();
if ($docblock !== null) {
$this->shortDescription = ucfirst($docblock->getShortDescription());
if (empty($this->shortDescription) && !$this instanceof PropertyDoc && $context !== null && $docblock->getTagsByName('inheritdoc') === null) {
$context->errors[] = ['line' => $this->startLine, 'file' => $this->sourceFile, 'message' => "No short description for " . substr(StringHelper::basename(get_class($this)), 0, -3) . " '{$this->name}'"];
}
$this->description = $docblock->getLongDescription()->getContents();
$this->phpDocContext = $docblock->getContext();
$this->tags = $docblock->getTags();
foreach ($this->tags as $i => $tag) {
if ($tag instanceof SinceTag) {
$this->since = $tag->getVersion();
unset($this->tags[$i]);
} elseif ($tag instanceof DeprecatedTag) {
$this->deprecatedSince = $tag->getVersion();
$this->deprecatedReason = $tag->getDescription();
unset($this->tags[$i]);
}
}
} elseif ($context !== null) {
$context->errors[] = ['line' => $this->startLine, 'file' => $this->sourceFile, 'message' => "No docblock for element '{$this->name}'"];
}
}
作者:sciurodon
项目:yii
public function testTruncateWords()
{
$this->assertEquals('это тестовая multibyte строка', StringHelper::truncateWords('это тестовая multibyte строка', 5));
$this->assertEquals('это тестовая multibyte...', StringHelper::truncateWords('это тестовая multibyte строка', 3));
$this->assertEquals('это тестовая multibyte!!!', StringHelper::truncateWords('это тестовая multibyte строка', 3, '!!!'));
$this->assertEquals('это строка с неожиданными...', StringHelper::truncateWords('это строка с неожиданными пробелами', 4));
}
作者:hiqde
项目:hipanel-module-dn
public function rules()
{
return [[['type_in', 'hdomain_id_in'], 'filter', 'filter' => function ($value) {
$res = StringHelper::explode($value, ',', true, true);
return $res;
}, 'skipOnArray' => true, 'on' => ['export-hosts']], [['type_in'], 'default', 'value' => ['a', 'aaaa'], 'on' => ['export-hosts']], [['type_in'], 'each', 'rule' => ['in', 'range' => array_keys($this->getTypes())], 'on' => ['export-hosts']], [['hdomain_id_in'], 'required', 'on' => ['export-hosts']]];
}
作者:ivan-chk
项目:yii2-mozayk
public function init()
{
if (!$this->modelName) {
$this->modelName = StringHelper::basename(get_class($this), 'Controller');
}
if (!$this->modelClass) {
$modelClass = 'app\\models\\' . $this->modelName;
if (class_exists($modelClass)) {
$this->modelClass = $modelClass;
} else {
$modelClass = 'app\\models\\readonly\\' . $this->modelName;
if (class_exists($modelClass)) {
$this->modelClass = $modelClass;
}
}
}
if (!$this->filterModelClass) {
$filterModelClass = 'app\\models\\search\\' . $this->modelName . 'Search';
if (class_exists($filterModelClass)) {
$this->filterModelClass = $filterModelClass;
} else {
$filterModelClass = 'app\\models\\readonly\\search\\' . $this->modelName . 'Search';
if (class_exists($filterModelClass)) {
$this->filterModelClass = $filterModelClass;
}
}
}
parent::init();
}
作者:kalyabi
项目:yii2-git-vie
/**
* @inheritdoc
*/
public function getDiff($file = null)
{
$previewFile = [];
$ret = [];
$appendFileDiff = function () use(&$previewFile, &$ret) {
if (!empty($previewFile)) {
$ret[] = new Diff($previewFile);
$previewFile = [];
}
};
$fullDiff = [];
if (!is_null($file)) {
$fullDiff = $this->repository->getDiff(Repository::DIFF_PATH, $file, $this->id);
} else {
$fullDiff = $this->repository->getDiff(Repository::DIFF_COMMIT, $this->id);
}
foreach ($fullDiff as $row) {
if (StringHelper::startsWith($row, 'diff')) {
// the new file diff, append to $ret
$appendFileDiff();
}
$previewFile[] = $row;
}
// append last file diff to full array
$appendFileDiff();
return $ret;
}
作者:developer-a
项目:yii2-blo
public static function Preview($models)
{
foreach ($models as $key => $model) {
$models[$key]['text'] = StringHelper::truncate(strip_tags($model['text']), 400);
}
return $models;
}
作者:rajanishtime
项目:basicyi
public function testBasename()
{
$this->assertEquals('', StringHelper::basename(''));
$this->assertEquals('file', StringHelper::basename('file'));
$this->assertEquals('file.test', StringHelper::basename('file.test', '.test2'));
$this->assertEquals('file', StringHelper::basename('file.test', '.test'));
$this->assertEquals('file', StringHelper::basename('/file'));
$this->assertEquals('file.test', StringHelper::basename('/file.test', '.test2'));
$this->assertEquals('file', StringHelper::basename('/file.test', '.test'));
$this->assertEquals('file', StringHelper::basename('/path/to/file'));
$this->assertEquals('file.test', StringHelper::basename('/path/to/file.test', '.test2'));
$this->assertEquals('file', StringHelper::basename('/path/to/file.test', '.test'));
$this->assertEquals('file', StringHelper::basename('\\file'));
$this->assertEquals('file.test', StringHelper::basename('\\file.test', '.test2'));
$this->assertEquals('file', StringHelper::basename('\\file.test', '.test'));
$this->assertEquals('file', StringHelper::basename('C:\\file'));
$this->assertEquals('file.test', StringHelper::basename('C:\\file.test', '.test2'));
$this->assertEquals('file', StringHelper::basename('C:\\file.test', '.test'));
$this->assertEquals('file', StringHelper::basename('C:\\path\\to\\file'));
$this->assertEquals('file.test', StringHelper::basename('C:\\path\\to\\file.test', '.test2'));
$this->assertEquals('file', StringHelper::basename('C:\\path\\to\\file.test', '.test'));
// mixed paths
$this->assertEquals('file.test', StringHelper::basename('/path\\to/file.test'));
$this->assertEquals('file.test', StringHelper::basename('/path/to\\file.test'));
$this->assertEquals('file.test', StringHelper::basename('\\path/to\\file.test'));
// \ and / in suffix
$this->assertEquals('file', StringHelper::basename('/path/to/filete/st', 'te/st'));
$this->assertEquals('st', StringHelper::basename('/path/to/filete/st', 'te\\st'));
$this->assertEquals('file', StringHelper::basename('/path/to/filete\\st', 'te\\st'));
$this->assertEquals('st', StringHelper::basename('/path/to/filete\\st', 'te/st'));
// http://www.php.net/manual/en/function.basename.php#72254
$this->assertEquals('foo', StringHelper::basename('/bar/foo/'));
$this->assertEquals('foo', StringHelper::basename('\\bar\\foo\\'));
}
作者:rocketyan
项目:hasscms-ap
public function getMetaData()
{
$model = $this->getMetaModel();
$title = $model->title ?: $this->title;
$description = $model->description ?: StringHelper::truncate(strip_tags($this->content), 200);
return [$title, $description, $model->keywords];
}
作者:cj
项目:yii2-playgroun
public function actionIndex()
{
$actions = [];
$rc = new \ReflectionClass($this);
$publicMethods = $rc->getMethods(\ReflectionMethod::IS_PUBLIC);
$availableActions = [];
foreach ($publicMethods as $publicMethod) {
$methodName = $publicMethod->name;
if ($methodName == 'actions') {
continue;
}
if (StringHelper::startsWith($methodName, 'action')) {
$availableActions[] = $methodName;
}
}
if (count($this->actions()) > 0) {
$availableActions = $availableActions + array_keys($this->actions());
}
$menus = [];
foreach ($availableActions as $actionName) {
$routeId = Inflector::camel2id(substr($actionName, strlen('action')));
$menus[] = Html::a($actionName, [$routeId]);
}
echo implode('<br/>', $menus);
}
作者:marciocamell
项目:yii2-simplecha
/**
* @inheritDoc
*/
public function formatConversation($model)
{
$model = parent::formatConversation($model);
$model['date'] = DateHelper::formatConversationDate($model['created_at']);
$model['text'] = StringHelper::truncate($model['text'], 20);
return $model;
}
作者:tunecin
项目:yii2-nested-res
/**
* Unlinks two or more models by provided primary key or a list of primary keys.
* If the relation type is a many_to_many. related row in the junction table will be deleted.
* Otherwise related foreign key will be simply set to NULL.
* A '204' response should be set to headers if any change has been made.
* @param string $IDs should hold the list of IDs related to the models to be unlinken from the relative one.
* it must be a string of the primary keys values separated by commas.
* @throws BadRequestHttpException if any of the models are not linked.
* @throws InvalidCallException if the models cannot be unlinked
*/
public function run($IDs)
{
$relModel = $this->getRelativeModel();
$modelClass = $this->modelClass;
$pk = $modelClass::primaryKey()[0];
$getter = 'get' . $this->relationName;
$ids = preg_split('/\\s*,\\s*/', $IDs, -1, PREG_SPLIT_NO_EMPTY);
$to_unlink = [];
foreach ($ids as $pk_value) {
$linked = $relModel->{$getter}()->where([$pk => $pk_value])->exists();
if ($linked === true) {
$to_unlink[] = $this->findModel($pk_value);
} else {
throw new BadRequestHttpException(StringHelper::basename($modelClass) . " '{$pk_value}' not linked to " . StringHelper::basename($this->relativeClass) . " '{$this->relative_id}'.");
}
}
$relType = $relModel->getRelation($this->relationName);
$delete = $relType->multiple === true && $relType->via !== null;
foreach ($to_unlink as $model) {
if ($this->checkAccess) {
call_user_func($this->checkAccess, $this->id, $model);
}
$relModel->unlink($this->relationName, $model, $delete);
}
Yii::$app->getResponse()->setStatusCode(204);
}
作者:novikovserge
项目:doublegi
public static function locationStringToGeometry($location)
{
if (preg_match('/^(\\-?\\d+(\\.\\d+)?),(\\-?\\d+(\\.\\d+)?)$/', $location, $match)) {
$location = \yii\helpers\StringHelper::explode($location, ',');
return self::getPostgisFormatByCoordinate($location[0], $location[1]);
}
return null;
}
作者:sintre
项目:yii2-basic-sintre
public function getThumbnailTrue()
{
if ($this->image) {
$name = \yii\helpers\StringHelper::basename($this->image);
$dir = \yii\helpers\StringHelper::dirname($this->image);
return Yii::getAlias($dir . '/thumb/' . $name);
}
}