);
}
$r = array();
foreach ( $this->results as $userid ) {
if ( 'all_with_meta' === $qv['fields'] ) {
$r[ $userid ] = new WP_User( $userid, '', $qv['blog_id'] );
} else {
$r[] = new WP_User( $userid, '', $qv['blog_id'] );
}
}
$this->results = $r;
}
}
/**
* Retrieves query variable.
*
* @since 3.5.0
*
* @param string $query_var Query variable key.
* @return mixed
*/
public function get( $query_var ) {
if ( isset( $this->query_vars[ $query_var ] ) ) {
return $this->query_vars[ $query_var ];
}
return null;
}
/**
* Sets query variable.
*
* @since 3.5.0
*
* @param string $query_var Query variable key.
* @param mixed $value Query variable value.
*/
public function set( $query_var, $value ) {
$this->query_vars[ $query_var ] = $value;
}
/**
* Used internally to generate an SQL string for searching across multiple columns.
*
* @since 3.1.0
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param string $search Search string.
* @param string[] $columns Array of columns to search.
* @param bool $wild Whether to allow wildcard searches. Default is false for Network Admin, true for single site.
* Single site allows leading and trailing wildcards, Network Admin only trailing.
* @return string
*/
protected function get_search_sql( $search, $columns, $wild = false ) {
global $wpdb;
$searches = array();
$leading_wild = ( 'leading' === $wild || 'both' === $wild ) ? '%' : '';
$trailing_wild = ( 'trailing' === $wild || 'both' === $wild ) ? '%' : '';
$like = $leading_wild . $wpdb->esc_like( $search ) . $trailing_wild;
foreach ( $columns as $column ) {
if ( 'ID' === $column ) {
$searches[] = $wpdb->prepare( "$column = %s", $search );
} else {
$searches[] = $wpdb->prepare( "$column LIKE %s", $like );
}
}
return ' AND (' . implode( ' OR ', $searches ) . ')';
}
/**
* Returns the list of users.
*
* @since 3.1.0
*
* @return array Array of results.
*/
public function get_results() {
return $this->results;
}
/**
* Returns the total number of users for the current query.
*
* @since 3.1.0
*
* @return int Number of total users.
*/
public function get_total() {
return $this->total_users;
}
/**
* Parses and sanitizes 'orderby' keys passed to the user query.
*
* @since 4.2.0
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param string $orderby Alias for the field to order by.
* @return string Value to used in the ORDER clause, if `$orderby` is valid.
*/
protected function parse_orderby( $orderby ) {
global $wpdb;
$meta_query_clauses = $this->meta_query->get_clauses();
$_orderby = '';
if ( in_array( $orderby, array( 'login', 'nicename', 'email', 'url', 'registered' ), true ) ) {
$_orderby = 'user_' . $orderby;
} elseif ( in_array( $orderby, array( 'user_login', 'user_nicename', 'user_email', 'user_url', 'user_registered' ), true ) ) {
$_orderby = $orderby;
} elseif ( 'name' === $orderby || 'display_name' === $orderby ) {
$_orderby = 'display_name';
} elseif ( 'post_count' === $orderby ) {
// @todo Avoid the JOIN.
$where = get_posts_by_author_sql( 'post' );
$this->query_from .= " LEFT OUTER JOIN (
SELECT post_author, COUNT(*) as post_count
FROM $wpdb->posts
$where
GROUP BY post_author
) p ON ({$wpdb->users}.ID = p.post_author)
";
$_orderby = 'post_count';
} elseif ( 'ID' === $orderby || 'id' === $orderby ) {
$_orderby = 'ID';
} elseif ( 'meta_value' === $orderby || $this->get( 'meta_key' ) == $orderby ) {
$_orderby = "$wpdb->usermeta.meta_value";
} elseif ( 'meta_value_num' === $orderby ) {
$_orderby = "$wpdb->usermeta.meta_value+0";
} elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) {
$include = wp_parse_id_list( $this->query_vars['include'] );
$include_sql = implode( ',', $include );
$_orderby = "FIELD( $wpdb->users.ID, $include_sql )";
} elseif ( 'nicename__in' === $orderby ) {
$sanitized_nicename__in = array_map( 'esc_sql', $this->query_vars['nicename__in'] );
$nicename__in = implode( "','", $sanitized_nicename__in );
$_orderby = "FIELD( user_nicename, '$nicename__in' )";
} elseif ( 'login__in' === $orderby ) {
$sanitized_login__in = array_map( 'esc_sql', $this->query_vars['login__in'] );
$login__in = implode( "','", $sanitized_login__in );
$_orderby = "FIELD( user_login, '$login__in' )";
} elseif ( isset( $meta_query_clauses[ $orderby ] ) ) {
$meta_clause = $meta_query_clauses[ $orderby ];
$_orderby = sprintf( 'CAST(%s.meta_value AS %s)', esc_sql( $meta_clause['alias'] ), esc_sql( $meta_clause['cast'] ) );
}
return $_orderby;
}
/**
* Parses an 'order' query variable and casts it to ASC or DESC as necessary.
*
* @since 4.2.0
*
* @param string $order The 'order' query variable.
* @return string The sanitized 'order' query variable.
*/
protected function parse_order( $order ) {
if ( ! is_string( $order ) || empty( $order ) ) {
return 'DESC';
}
if ( 'ASC' === strtoupper( $order ) ) {
return 'ASC';
} else {
return 'DESC';
}
}
/**
* Makes private properties readable for backward compatibility.
*
* @since 4.0.0
*
* @param string $name Property to get.
* @return mixed Property.
*/
public function __get( $name ) {
if ( in_array( $name, $this->compat_fields, true ) ) {
return $this->$name;
}
}
/**
* Makes private properties settable for backward compatibility.
*
* @since 4.0.0
*
* @param string $name Property to check if set.
* @param mixed $value Property value.
* @return mixed Newly-set property.
*/
public function __set( $name, $value ) {
if ( in_array( $name, $this->compat_fields, true ) ) {
return $this->$name = $value;
}
}
/**
* Makes private properties checkable for backward compatibility.
*
* @since 4.0.0
*
* @param string $name Property to check if set.
* @return bool Whether the property is set.
*/
public function __isset( $name ) {
if ( in_array( $name, $this->compat_fields, true ) ) {
return isset( $this->$name );
}
}
/**
* Makes private properties un-settable for backward compatibility.
*
* @since 4.0.0
*
* @param string $name Property to unset.
*/
public function __unset( $name ) {
if ( in_array( $name, $this->compat_fields, true ) ) {
unset( $this->$name );
}
}
/**
* Makes private/protected methods readable for backward compatibility.
*
* @since 4.0.0
*
* @param string $name Method to call.
* @param array $arguments Arguments to pass when calling.
* @return mixed Return value of the callback, false otherwise.
*/
public function __call( $name, $arguments ) {
if ( 'get_search_sql' === $name ) {
return $this->get_search_sql( ...$arguments );
}
return false;
}
}
تاریخچه ی موسیقی در ایران - Greily
Close
تاریخچه ی موسیقی در ایران
متن ها و آثار به جا مانده از ایران باستان، موسیقی را در دوران پیش از تاریخ تأیید می کند. در گاتها و متنهای فارسی میانه و مانوی، به مناسبت های مختلف، از سازهای گوناگون و خنیاگری یاد شده و در متنهای کهن دری، یعنی آثار منظوم و منثور دوران اسلامی، نیز اشارات زودگذری به موسیقی و موسیقیدانان دوران پیش از اسلام ایران، شده است که به نوبه خود میتواند درخور توجه و ثمرآفرین باشد. در عین حال، این مدارک و اسناد، گذشته از محدود و مسدود بودن، تاب انتقاد علمی را ندارد؛ زیرا برای نمونه، تطبیق سازهایی که تصویرشان در آثار و اشیاء باستانی دیده میشود با مصداق خارجی آنها به آسانی میسر نیست؛ به ویژه که بسیاری از سازها حتی در زمان معینی در نقاط مختلف کشور بر حسب اختلاف لهجه و زبان، به نامهای گوناگونی خوانده می شده و یا بر اثر گذشت زمان تغیر شکل داده است. همچنین، از آن جایی که متنهای فارسی میانه در سده های نخستین هجری بازسازی یا بازنویسی شده اند، در معرض تحریف و تصحیف، که از ویژگی های گذشتِ زمان و استنساخ یا نقل به شمار می رود، قرار گرفته اند. چنانکه نام آهنگهای باستانی ایران و الحان باربدی یا اسامی موسیقیدانان قدیم در مآخذ مختلف، یکسان دیده نمی شود، و شمار رامشگرانی که در دوران شهریاری بهرام گور (۴۲-۴۳ق.م) از هند به ایران فرستاده شده بوده اند به اختلاف روایت یک هزار، ۲هزار، ۴هزار، ۱۰ هزار و حتی ۱۲هزار ذکر شده است.
با آگاهی از این مباحث، پیش از وارد شدن به پژوهش و مطالعه در زمینه موسیقیِ ایران باستان، می توان شناخت جامع و بهتری از دوران مورد بحث کسب کنیم.
به نظر می رسد که ساکنان ایران زمین با بهره گیری از فرهنگ باستانی، عوامل اقلیمی و آمیزش با اقوام بومی، می توانسته اند موسیقی را به شکل فراگیری وسیله تسکین دردهای شادکامی، بیانِ احساس و کارآیی در مراسم مذهبی و جشنهای ملی قرار دهند.
این موضوع را اثر مُهری که در کاوشهای باستان شناختی از چغامیش به دست آمده و به نیمه دوم هزاره چهارم ق.م تعلق دارد، ثابت می کند، این اثر مُهر، سه نوازنده را نشان میدهد که هم زمان به نواختن چنگ، طبل و بوق اشتغال دارند و در کنار آنان آوازه خوانی دیده می شود که به رسم خوانندگان دست راستش را زیر گوشش گذاشته است.
این نگاره ی شگفت بر روی یک مُهر که از موسیقی پنجاه قرن پیش ایران داستان میگوید، توسط پرفسور دلوگاز و هلن جی کانتور در تپه چغامیش خوزستان یافت شد.
این نخستین سندی است که بشر از موسیقی به عنوان شکل هنر سازمان یافته دارد، که در واقع پیشروی ارکسترهای امروزی را مجسم میکند. در این تصویر ؛ یک چنگ، چیزی شبیه به طبل، دو شاخ که نوع ابتدایی از آلت موسیقی بادی میباشد که به طور کوچک و بزرگ برای گام های بالا و پایین طراحی شده است،کوزه هایی در انواع مختلف و آوازه خوانی که دست بر گونه و گوش نهاده برای سرودن دیده میشود.
این شیوه آواز خوانی هنوز در خاورمیانه متداول است. بنابراین در این تصویر ارکستری را مشاهده می کنیم که سازهای زهی، بادی و کوبه ای را در بردارد و خواننده با آن ها همکاری می کند. اما این ارکستر گوشه ای از صحنه اصلی را نشان می دهد و نوازندگان به جز طبل زن همه به سمت راست چرخیده اند. در برابر، مردی مشاهده می شود که روی بالشی نشسته و میزی در جلویش قرار دارد که روی آن خوراکی های گوناگون چیده شده است و خدمتکار در حال پذیرایی از اوست. می توان چنین پنداشت که این تصویر صحنه ای را نشان می دهد که به مراسم مذهبی بستگی دارد.
حضور مرد آوازه خوان در کنار گروه ارکستر، نشان از وجود شعر و کلام آهنگین در این برهه زمانی در ایران دارد که بسیار شگفت میباشد. علاوه بر این موضوع، این مهر می تواند کهن ترین نمونه همنوازی در جهان نیز به شمار رود.
Add Comment