public function createSet($name) { $id = str_replace('-', '_', shopHelper::transliterate($name)); $id = $this->set_model->suggestUniqueId($id); if (empty($name)) { $name = _w('(no-name)'); } return $this->set_model->add(array('id' => $id, 'name' => $name)); }
public function createCategory($name) { $url = shopHelper::transliterate($name, false); $url = $this->category_model->suggestUniqueUrl($url); if (empty($name)) { $name = _w('(no-name)'); } return $this->category_model->add(array('name' => $name, 'url' => $url)); }
public function getData($id) { $data = waRequest::post('info'); if (!$id) { $product_id = waRequest::get('product_id', null, waRequest::TYPE_INT); $product = $this->getProduct($product_id); $data['product_id'] = $product['id']; } $data['url'] = trim($data['url'], '/'); if (!$id && !$data['url']) { $data['url'] = shopHelper::transliterate($data['name']); } if (empty($data['name'])) { $data['name'] = '(' . _ws('no-title') . ')'; } $data['status'] = isset($data['status']) ? 1 : 0; return $data; }
private function saveSetSettings($id, &$data) { if (empty($data['count']) || $data['count'] < 0) { $data['count'] = 0; } /** * @var shopSetModel $model */ $model = $this->getModel('set'); if (!$id) { if (empty($data['id'])) { $id = shopHelper::transliterate($data['name']); $data['id'] = $model->suggestUniqueId($id); } else { $data['id'] = $model->suggestUniqueId($data['id']); } if (!$this->setSettingsValidate(null, $data)) { return false; } if (empty($data['name'])) { $data['name'] = _w('(no-name)'); } $id = $model->add($data); } else { $set = $model->getById($id); if (!$this->setSettingsValidate($set, $data)) { return false; } if (empty($data['name'])) { $data['name'] = $set['name']; } if (!empty($data['id'])) { $id = $data['id']; } else { $id = shopHelper::transliterate($data['name']); if ($id != $set['id']) { $id = $model->suggestUniqueId($id); } $data['id'] = $id; } $data['edit_datetime'] = date('Y-m-d H:i:s'); $model->update($set['id'], $data); } if ($id) { $data['id'] = $data; /** * @event set_save * @param array $set * @return void */ wa()->event('set_save', $data); } return $id; }
/** * Create new waContactField of appropriate type from given array of options. */ public static function createFromOpts($opts, $occupied_keys = array()) { if (!is_array($opts) || empty($opts['_type'])) { return null; } // Generate field_id from name $fld_id = shopHelper::transliterate((string) ifset($opts['localized_names'], '')); if (!$fld_id) { $fld_id = 'f'; } if (strlen($fld_id) > 15) { $fld_id = substr($fld_id, 0, 15); } while (isset($occupied_keys[$fld_id])) { if (strlen($fld_id) >= 15) { $fld_id = substr($fld_id, 0, 10); } $fld_id .= mt_rand(0, 9); } // Create field object of appropriate type $options = array('app_id' => 'shop'); $ftype = strtolower($opts['_type']); switch ($ftype) { case 'textarea': $class = 'waContactStringField'; $options['input_height'] = 5; break; case 'radio': $class = 'waContactRadioSelectField'; break; default: $class = 'waContact' . ucfirst($ftype) . 'Field'; } if (!$ftype || !class_exists($class)) { return null; } return new $class($fld_id, '', $options); }
/** * @param $url * @param waModel $context * @param int $length * @param string $field * @return string */ public static function genUniqueUrl($url, $context, &$counter = 0, $length = 512, $field = 'url') { $counter = 0; $url = preg_replace('/\\s+/', '-', $url); $url = shopHelper::transliterate($url); if (strlen($url) == 0) { $url = (time() << 24) + $counter++; } else { $url = mb_substr($url, 0, $length); } $url = mb_strtolower($url); $pattern = mb_substr($context->escape($url, 'like'), 0, $length - 3) . '%'; $sql = "SELECT `{$field}` FROM {$context->getTableName()} WHERE url LIKE '{$pattern}' ORDER BY LENGTH(`{$field}`)"; $alike = $context->query($sql)->fetchAll('url'); if (is_array($alike) && isset($alike[$url])) { $last = array_shift($alike); $counter = 1; do { $modifier = "-{$counter}"; $_length = mb_strlen($modifier); $url = mb_substr($last['url'], 0, $length - $_length) . $modifier; } while (isset($alike[$url]) && ++$counter < 100); if (isset($alike[$url])) { $short_uuid = (time() << 24) + $counter++; $_length = mb_strlen($short_uuid); $url = mb_substr($last['url'], 0, $length - $_length) . $short_uuid; } } return mb_strtolower($url); }
public function execute() { $this->response = shopHelper::transliterate(waRequest::get('str', '', waRequest::TYPE_STRING_TRIM), waRequest::get('strict', 1, waRequest::TYPE_INT)); }