/** * Instantiates an object using a string formatted according to the Google * Analytics API's syntax. * * @param string $sortString * @return Google\Analytics\GaDataSortOrder */ public static function createFromString($sortString) { $components = explode(',', $sortString); $instance = new self(); foreach ($components as $component) { if ($component[0] == '-') { $component = substr($component, 1); $order = SORT_DESC; } else { $order = SORT_ASC; } $instance->addField($component, $order); } return $instance; }
/** @return Am_DbSync_Table */ static function createFromXml(SimpleXmlElement $table) { $t = new self((string) $table['name']); $t->oldNames = array_filter(array_map('trim', explode(",", $table["rename"]))); foreach ($table->field as $field) { $t->addField(Am_DbSync_Field::createFromXml($field)); } foreach ($table->index as $index) { $t->addIndex(Am_DbSync_Index::createFromXml($index)); } foreach ($table->alter as $alter) { foreach ($alter->drop as $drop) { if ((string) $drop['field']) { $t->addDropField((string) $drop['field']); } if ((string) $drop['index']) { $t->addDropIndex((string) $drop['index']); } } } // check oldnames $fieldNames = array_keys($t->getFields()); foreach ($t->getFields() as $field) { if ($field->getOldNames() && ($intersect = array_intersect($fieldNames, $field->getOldNames()))) { throw new Exception("XML file error - attempt to rename a field defined in schema /scheme/table[{$t->name}]/field=[{$intersect[0]}] to [{$field->getName()}]"); } } $indexNames = array_keys($t->getIndexes()); foreach ($t->getIndexes() as $index) { if ($index->getOldNames() && ($intersect = array_intersect($indexNames, $index->getOldNames()))) { throw new Exception("XML file error - attempt to rename an index defined in schema /scheme/table[{$t->name}]/index=[{$intersect[0]}] to [{$index->getName()}]"); } } // create by data if ($table->data && $table->data->query) { foreach ($table->data->query as $query) { $t->data[] = (string) $query; } } // create by table_data if ($table->table_data && $table->table_data->row) { foreach ($table->table_data->row as $row) { $record = array(); foreach ($row->field as $field) { $record[(string) $field['name']] = (string) $field; } $t->data[] = $record; } } return $t; }
/** * {@inheritdoc} */ public static function fromArray(array $values) { $message = new self(); $values = array_merge(['name' => null, 'field' => [], 'extension' => [], 'nested_type' => [], 'enum_type' => [], 'extension_range' => [], 'oneof_decl' => [], 'options' => null, 'reserved_range' => [], 'reserved_name' => []], $values); $message->setName($values['name']); $message->setOptions($values['options']); foreach ($values['field'] as $item) { $message->addField($item); } foreach ($values['extension'] as $item) { $message->addExtension($item); } foreach ($values['nested_type'] as $item) { $message->addNestedType($item); } foreach ($values['enum_type'] as $item) { $message->addEnumType($item); } foreach ($values['extension_range'] as $item) { $message->addExtensionRange($item); } foreach ($values['oneof_decl'] as $item) { $message->addOneofDecl($item); } foreach ($values['reserved_range'] as $item) { $message->addReservedRange($item); } foreach ($values['reserved_name'] as $item) { $message->addReservedName($item); } return $message; }
/** * 获取搜索日志的字段方案 * @return XSFieldScheme 搜索日志字段方案 */ public static function logger() { if (self::$_logger === null) { $scheme = new self(); $scheme->addField('id', array('type' => 'id')); $scheme->addField('pinyin'); $scheme->addField('partial'); $scheme->addField('total', array('type' => 'numeric', 'index' => 'self')); $scheme->addField('lastnum', array('type' => 'numeric', 'index' => 'self')); $scheme->addField('currnum', array('type' => 'numeric', 'index' => 'self')); $scheme->addField('currtag', array('type' => 'string')); $scheme->addField('body', array('type' => 'body')); self::$_logger = $scheme; } return self::$_logger; }
/** * @return Am_Grid_Editable_Subusers */ static function factory(User $reseller, Zend_Controller_Request_Http $request, Am_View $view, Am_Di $di) { $ds = new Am_Query_User_Subusers($reseller->pk()); $ds->leftJoin('?_subusers_subscription', 'sgu'); $ds->addField('GROUP_CONCAT(sgu.product_id)', 'groups'); $ds->addField('GROUP_CONCAT(sgu.status)', 'groups_status'); $grid = new self('_subusers', ___("Subusers"), $ds, $request, $view, $di, $reseller); $grid->setEventId('gridSubusersUser'); $grid->addField('login', ___('Username')); $grid->addField('name_f', ___('First Name')); $grid->addField('name_l', ___('Last Name')); $grid->addField('email', ___('E-Mail Address')); $grid->addField('groups', ___('Groups'))->setRenderFunction(array($grid, 'renderGroups')); $grid->setForm(array($grid, '_createForm')); $grid->addCallback(Am_Grid_Editable::CB_BEFORE_INSERT, array($grid, 'beforeInsert')); $grid->addCallback(Am_Grid_Editable::CB_AFTER_INSERT, array($grid, 'afterInsert')); $grid->addCallback(Am_Grid_Editable::CB_AFTER_SAVE, array($grid, 'afterSave')); $grid->addCallback(Am_Grid_Editable::CB_BEFORE_SAVE, array($grid, 'beforeSave')); $grid->addCallback(Am_Grid_Editable::CB_AFTER_DELETE, array($grid, 'afterDelete')); $grid->addCallback(Am_Grid_Editable::CB_VALUES_TO_FORM, array($grid, '_valuesToForm')); $grid->setFilter(new Am_Grid_Filter_Text(null, array('login' => 'LIKE', 'name_f' => 'LIKE', 'name_l' => 'LIKE', 'email' => 'LIKE'))); if ($di->config->get('subusers_can_login')) { $grid->actionAdd(new Am_Grid_Action_Url('login', ___('Login as User'), '__ROOT__/subusers/index/login-as?id=__ID__'))->setTarget('_top'); } $grid->actionGet('edit')->setTarget('_top'); $grid->actionGet('delete')->setTarget('_top'); $grid->actionGet('insert')->setTarget('_top'); $subusers_count = $reseller->data()->get('subusers_count'); $canAdd = 0; foreach ($subusers_count as $product_id => $v) { if ($v['avail_count'] > $v['pending_count'] + $v['active_count']) { $canAdd++; } } if (!$canAdd) { $grid->actionDelete('insert'); } if ($canAdd) { $grid->actionAdd(new Am_Grid_Action_ImportCSV('import', ___('Import from CSV'), $reseller)); } if ($di->config->get('subusers_cannot_delete') == 1) { $grid->actionDelete('delete'); } if ($di->config->get('subusers_cannot_edit')) { $grid->actionDelete('edit'); } return $grid; }