本文整理汇总了PHP中CUtils::strLeft方法的典型用法代码示例。如果您正苦于以下问题:PHP CUtils::strLeft方法的具体用法?PHP CUtils::strLeft怎么用?PHP CUtils::strLeft使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CUtils
的用法示例。
在下文中一共展示了CUtils::strLeft方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getValues
private function getValues()
{
$values = array();
if (array_key_exists('source', $this->params)) {
$source = $this->params['source'];
if (CUtils::strLeft($source, ".") == "class") {
$class = CUtils::strRight($source, ".");
if (array_key_exists('properties', $this->params)) {
$object = new $class(array("properties" => $this->params['properties']));
} else {
$object = new $class();
}
$sourceParams = $this->params['params'];
// для совместимости их надо положить в запрос
foreach ($sourceParams as $key => $value) {
$_POST[$key] = $value;
}
$values = $object->actionGetViewData();
} else {
$taxonomy = CTaxonomyManager::getTaxonomy($this->params['source']);
$values = $taxonomy->getTermsList();
}
} elseif (array_key_exists('values', $this->params)) {
$values = $this->params['values'];
}
return $values;
}
示例2: isTextField
/**
* @return bool
*/
public function isTextField()
{
if ($this->type == "text") {
return true;
} elseif (CUtils::strLeft($this->type, "(") == "varchar") {
return true;
}
return false;
}
示例3: getConditionField
private static function getConditionField(array $params = array())
{
$result = "";
if ($params["relationPower"] == RELATION_HAS_ONE) {
if ($params["storageField"] != "") {
$condition = $params["storageField"];
$result = CUtils::strLeft($condition, "=");
$result = str_replace(" ", "", $result);
}
}
return $result;
}
示例4: updateWithJsonString
/**
* Обновление модели на основе данных, пришедших из json-контроллера
*
* @param $jsonString
* @return array
*/
public function updateWithJsonString($jsonString)
{
// данные модели
$modelData = json_decode($jsonString, true);
// убираем служебную инфу
if (array_key_exists("_translation", $modelData)) {
unset($modelData["_translation"]);
}
// попробуем сохранить данные, которые находятся в отношениях
// многие-ко-многим
foreach ($this->relations() as $field => $properties) {
if ($properties["relationPower"] == RELATION_MANY_TO_MANY) {
if (array_key_exists($field, $modelData)) {
$data = $modelData[$field];
// уберем их из модели
unset($modelData[$field]);
// уберем уже имеющиеся данные из связанной таблицы
/**
* @var CActiveRecord $ar
*/
if (array_key_exists("id", $modelData)) {
foreach (CActiveRecordProvider::getWithCondition($properties["joinTable"], trim(CUtils::strLeft($properties["leftCondition"], "=")) . "=" . $modelData["id"])->getItems() as $ar) {
$ar->remove();
}
}
// добавим туда новые данные
foreach ($data as $value) {
$ar = new CActiveRecord(array($properties["rightKey"] => $value["id"], trim(CUtils::strLeft($properties["leftCondition"], "=")) => $modelData["id"], "id" => null));
$ar->setTable($properties["joinTable"]);
$ar->insert();
}
}
} elseif ($properties["relationPower"] == RELATION_HAS_MANY) {
if (array_key_exists($field, $modelData)) {
$data = $modelData[$field];
// уберем данные из модели
unset($modelData[$field]);
// если в свойствах отношения указан целевой класс, то
// будем обновлять автоматом
if (array_key_exists("targetClass", $properties)) {
// получим список записей, которые уже есть
$targetClass = $properties["targetClass"];
/**
* @var CActiveModel $targetObj
*/
$targetObj = new $targetClass();
$docsToRemove = array();
// его может не быть, если запись новая
if (array_key_exists("id", $modelData)) {
$items = CActiveRecordProvider::getWithCondition($targetObj->getTable(), trim(CUtils::strLeft($properties["storageCondition"], "=")) . "=" . $modelData["id"]);
/**
* @var CActiveRecord $item
*/
foreach ($items->getItems() as $item) {
$docsToRemove[] = $item->getId();
}
}
/**
* @var string $item
*/
foreach ($data as $item) {
// полученные данные обратно в json, чтобы
// можно было все сделать одинаково рекурсивно
$childJsonData = json_encode($item);
// создадим экземпляр целевого класса
/**
* @var CActiveModel $targetObj
*/
$targetObj = new $targetClass();
$targetObj->updateWithJsonString($childJsonData);
$targetObj->save();
// уберем из списка добавленную запись
if (in_array($targetObj->getId(), $docsToRemove)) {
unset($docsToRemove[array_search($targetObj->getId(), $docsToRemove)]);
}
}
// удалим элементы из списка на удаление - мы
// их удалили и вместе с другими данными с клиента
// они не пришли
if (count($docsToRemove) > 0) {
CActiveRecordProvider::removeWithCondition($targetObj->getTable(), "id in (" . implode(", ", $docsToRemove) . ")");
}
}
}
}
}
// данные обратно в модель
foreach ($modelData as $key => $value) {
$this->{$key} = $value;
}
return $modelData;
}
示例5: activeLookup
public static function activeLookup($name, CModel $model, $catalog = "", $isMultiple = false, $properties = array(), $allowCreation = false)
{
/**
* Безумно полезная штука для работы со связанными
* моделями. Если в названии поля есть скобки, то производится
* разбор вида подмодель[ее поле]
*/
$submodelName = "";
if (strpos($name, "[") !== false) {
$submodelName = substr($name, 0, strpos($name, "["));
$name = CUtils::strRight($name, "[");
$name = CUtils::strLeft($name, "]");
$model = $model->{$submodelName};
}
$field = $model::getClassName();
if ($submodelName !== "") {
$field .= "[" . $submodelName . "]";
}
$field .= "[" . $name . "]";
$fieldRequired = false;
$validators = CCoreObjectsManager::getFieldValidators($model);
if (array_key_exists($name, $validators)) {
$fieldRequired = true;
}
$inline = "";
$class = self::getFielsizeClass();
$inline .= ' class="' . $class . '"';
$data = $model->{$name};
?>
<div class="catalogLookup" asu-catalog="<?php
echo $catalog;
?>
" asu-multiple="<?php
echo $isMultiple ? "true" : "false";
?>
" asu-value-name="<?php
echo $field;
?>
" asu-creation="<?php
echo $allowCreation ? "true" : "false";
?>
">
<?php
if (is_object($data)) {
?>
<?php
$index = 0;
?>
<?php
foreach ($data->getItems() as $val) {
$index++;
?>
<input type="hidden" name="<?php
echo $field;
?>
[<?php
echo $index;
?>
]" value="<?php
echo $val->getId();
?>
" asu-type="value">
<?php
}
?>
<?php
} else {
?>
<input type="hidden" name="<?php
echo $field;
?>
" value="<?php
echo $data;
?>
" asu-type="value">
<?php
}
?>
<?php
foreach ($properties as $key => $value) {
?>
<input type="hidden" value="<?php
echo $value;
?>
" asu-type="property" asu-property-key="<?php
echo $key;
?>
">
<?php
}
?>
<table <?php
echo $inline;
?>
id="<?php
echo $name;
?>
" style="margin-left: 0px; ">
//.........这里部分代码省略.........
示例6: searchObjectsFactory
/**
* @param $catalog
* @return ISearchCatalogInterface
* @throws Exception
*/
private function searchObjectsFactory($catalog, $properties = array())
{
if ($catalog == "staff") {
return new CSearchCatalogStaff(array("properties" => $properties));
} elseif ($catalog == "student") {
return new CSearchCatalogStudent(array("properties" => $properties));
} elseif ($catalog == "studentgroup") {
return new CSearchCatalogStudentGroup(array("properties" => $properties));
} elseif ($catalog == "sab_commissions") {
return new CSearchCatalogSABCommission(array());
} elseif (CUtils::strLeft($catalog, ".") == "class") {
$class = CUtils::strRight($catalog, ".");
return new $class(array("properties" => $properties));
} elseif (!is_null(CTaxonomyManager::getTaxonomy($catalog))) {
return new CSearchCatalogTaxonomy(array("taxonomy" => $catalog, "properties" => $properties));
} elseif (!is_null(CTaxonomyManager::getLegacyTaxonomy($catalog))) {
return new CSearchCatalogTaxonomyLegacy(array("taxonomy" => $catalog, "properties" => $properties));
} else {
throw new Exception("Не могу найти каталог для поиска " . $catalog);
}
}
示例7: actionPrint
public function actionPrint()
{
/**
* Получаем обратно параметры контекста из запроса.
* Мы получаем:
* 1. Класс менеджера
* 2. Метод менеджера для получения нужного объекта
* 3. Идентификатор объекта
* 4. Идентификатор печатной формы
*/
$managerClass = CRequest::getString("manager");
$managerMethod = CRequest::getString("method");
$objectId = CRequest::getInt("id");
$formId = CRequest::getInt("template");
/**
* Получаем объект через менеджер
*/
$object = $managerClass::$managerMethod($objectId);
$form = CPrintManager::getForm($formId);
/**
* Берем объект анализатора в зависимости от формата шаблона
*/
$writer = null;
if ($form->form_format == "docx") {
$writer = new PHPWord();
} elseif ($form->form_format = "odt") {
$writer = new CPHPOdt();
}
/**
* Проверка на отладку. Если в шаблоне включена отладка, то
* вместо вывода пользователю показываем всякую полезную для разработчика
* информацию
*/
$this->_isDebug = $form->debug == "1";
/**
* Загружаем шаблон
*/
$wordTemplate = $writer->loadTemplate(PRINT_TEMPLATES_DIR . $form->template_file);
/**
* Попробуем получить все описатели из документа, чтобы не думать об их порядке в БД
*/
$fieldsFromTemplate = $wordTemplate->getFields();
/**
* Если включена отладка, то показываем все описатели
*/
if ($this->_isDebug) {
var_dump(array_keys($fieldsFromTemplate));
/**
* Это место для экспериментов и написания отладочного кода
*/
$value = array();
$this->debugTable($value);
}
/**
* Еще один вариант. Надеюсь, этот заработает нормально
*/
foreach ($fieldsFromTemplate as $fieldName => $descriptors) {
/**
* Если поле из шаблона есть в наборе полей,
* то вычисляем его. Перед вычислением проверяем,
* есть ли привязанные к нему дочерние описатели. Если дочерние
* описатели есть, то не вычисляем, так как вычислением дочерних
* будет заниматься родительский
*/
if (!is_null($form->formset->getFieldByName($fieldName))) {
$field = $form->formset->getFieldByName($fieldName);
if (is_null($field->parent)) {
foreach ($descriptors as $node) {
$xml = $this->processNode($node, $field, $object, $form);
}
}
} elseif (mb_strpos($fieldName, ".class") !== false) {
/**
* Это новый описатель, параметры которого хранятся в отдельном классе
*/
$classFieldName = CUtils::strLeft($fieldName, ".class");
/**
* @var $classField IPrintClassField
*/
$classField = new $classFieldName();
if (!is_a($classField, "IPrintClassField")) {
throw new Exception("Класс " . $classField . " не реализует интерфейс IPrintClassField");
}
/**
* Дабы не ломать уже имеющуюся структуру работать будем через
* класс-адаптер
*/
$adapter = new CPrintClassFieldToFieldAdapter($classField, $object);
foreach ($descriptors as $node) {
$xml = $this->processNode($node, $adapter, $object, $form);
}
}
}
$wordTemplate->setDocXML($xml);
/**
* Теперь стили, они отдельно обрабатываются
*/
$fieldsFromTemplate = $wordTemplate->getStyleFields();
if ($this->_isDebug) {
var_dump(array_keys($fieldsFromTemplate));
//.........这里部分代码省略.........
示例8: getMimetype
/**
* Mime-type файла по указанному пути
*
* @param $filename
* @return mixed
*/
public static function getMimetype($filename)
{
$filetype = "";
if (class_exists("finfo")) {
$finfo = new finfo(FILEINFO_MIME);
$filetype = $finfo->file($filename);
$filetype = CUtils::strLeft($filetype, ";");
$filetype = str_replace("/", "-", $filetype);
} elseif (function_exists("mime_content_type")) {
$filetype = mime_content_type($filename);
$filetype = str_replace("/", "-", $filetype);
} else {
$mime_types = array('txt' => 'text/plain', 'htm' => 'text/html', 'html' => 'text/html', 'php' => 'text/html', 'css' => 'text/css', 'js' => 'application/javascript', 'json' => 'application/json', 'xml' => 'application/xml', 'swf' => 'application/x-shockwave-flash', 'flv' => 'video/x-flv', 'png' => 'image/png', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'gif' => 'image/gif', 'bmp' => 'image/bmp', 'ico' => 'image/vnd.microsoft.icon', 'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml', 'zip' => 'application/zip', 'rar' => 'application/x-rar-compressed', 'exe' => 'application/x-msdownload', 'msi' => 'application/x-msdownload', 'cab' => 'application/vnd.ms-cab-compressed', 'mp3' => 'audio/mpeg', 'qt' => 'video/quicktime', 'mov' => 'video/quicktime', 'pdf' => 'application/pdf', 'psd' => 'image/vnd.adobe.photoshop', 'ai' => 'application/postscript', 'eps' => 'application/postscript', 'ps' => 'application/postscript', 'doc' => 'application/msword', 'rtf' => 'application/rtf', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', 'docx' => 'application/msword', 'xlsx' => 'application/vnd.ms-excel', 'pptx' => 'application/vnd.ms-powerpoint', 'odt' => 'application/vnd.oasis.opendocument.text', 'ods' => 'application/vnd.oasis.opendocument.spreadsheet');
$ext = strtolower(array_pop(explode('.', $filename)));
if (array_key_exists($ext, $mime_types)) {
$filetype = $mime_types[$ext];
$filetype = str_replace("/", "-", $filetype);
} else {
$filetype = "unknown";
}
}
return $filetype;
}