/**
  * 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;
 }
Example #2
0
 /** @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;
 }
Example #5
0
 /**
  * @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;
 }