/** * Render albums with link to album photos * * @param array $data */ public function renderAlbums($data = array()) { $output = ''; if (!empty($data)) { $output .= '<h1>Albums for ' . $data['author']['name'] . '</h1>'; if (!empty($data['entry'])) { if (!isset($data['entry'][0])) { $data['entry'][0] = $data['entry']; } foreach ($data['entry'] as $album) { $output .= '<div class="album">'; $output .= '<h2 class="album-title">' . $this->Html->link($album['title'], array('action' => 'album', $this->_pullIdFromHref($album['link'][0]['href']))) . '</h2>'; $output .= '<img src="' . $album['group']['thumbnail']['url'] . '" height="50" alt="" style="float:left; margin:0 1em 1em 0;" />'; $output .= '<p class="summary">' . nl2br($album['summary']) . '</p>'; $output .= '<p class="meta">' . $album['numphotos'] . ife($album['numphotos'] <= 1, ' Photo', ' Photos') . ' | Published: ' . date('m-d-Y', strtotime($album['published'])) . ' | Location(s): ' . $album['location'] . '</p>'; if ($album['numphotos'] > 0) { // render photos? } $output .= '</div>'; } } else { $output .= 'There are no albums available.'; } } return $this->output($output); }
/** * Displays a list of flags * * @param array $options Options with the following possible keys * - basePath: Base path for the flag images, with a trailing slash * - class: Class of the <ul> wrapper * - id Id of the wrapper * @return void */ public function flagSwitcher($options = array()) { $_defaults = array( 'basePath' => $this->basePath, 'class' => 'languages'); $options = array_merge($_defaults, $options); $langs = Configure::read('Config.languages'); if (defined('DEFAULT_LANGUAGE')) { array_unshift($langs, DEFAULT_LANGUAGE); } $out = ''; if (!empty($langs)) { $out .= '<ul class="' . $options['class'] . '"' . ife(empty($options['id']), '', ' id="' . $options['id'] . '"') . '>'; foreach($langs as $lang) { $class = $lang; if ($lang == Configure::read('Config.language')) { $class .= ' selected'; } $url = array_merge($this->params['named'], $this->params['pass'], compact('lang')); $out .= '<li class="' . $class . '">' . $this->Html->link($this->flagImage($lang, $options), $url, array('escape' => false)) . '</li>'; } $out .= '</ul>'; } return $out; }
/** * Updates the sum and counter cache of belongsTo associations after a save or delete operation * * @param array $keys Optional foreign key data, defaults to the information $this->data * @param boolean $created True if a new record was created, otherwise only associations with * 'counterScope' defined get updated * @return void * @access public */ function updateCounterCache($keys = array(), $created = false) { parent::updateCounterCache($keys); if (empty($keys)) { $keys = $this->data[$this->alias]; } foreach ($this->belongsTo as $parent => $assoc) { if (!empty($assoc['sumCache'])) { if ($assoc['sumCache'] === true) { $assoc['sumCache'] = Inflector::underscore($this->alias) . '_sum'; } if ($this->{$parent}->hasField($assoc['sumCache'])) { $conditions = array($this->escapeField($assoc['foreignKey']) => $keys[$assoc['foreignKey']]); if (isset($assoc['sumScope'])) { $conditions = array_merge($conditions, (array) $assoc['sumScope']); } if (!isset($assoc['sumField'])) { $assoc['sumField'] = 'amount'; } $fields = 'SUM(' . $assoc['sumField'] . ') AS ' . $assoc['sumField'] . ''; $recursive = -1; list($edge) = array_values($this->find('first', compact('conditions', 'fields', 'recursive'))); $sum = ife(empty($edge[$assoc['sumField']]), 0, $edge[$assoc['sumField']]); $this->{$parent}->updateAll(array($assoc['sumCache'] => $sum), array($this->{$parent}->escapeField() => $keys[$assoc['foreignKey']])); } } } }
/** * Setup * * @param AppModel $Model * @param array $settings */ public function setup(&$Model, $settings = array()) { if (!isset($this->settings[$Model->alias])) { $this->settings[$Model->alias] = $this->defaults; } $this->settings[$Model->alias] = array_merge($this->settings[$Model->alias], ife(is_array($settings), $settings, array())); }
/** * Initiate behavior for the model using specified settings. Available settings: * * - recursive: (boolean, optional) set to true to allow containable to automatically * determine the recursiveness level needed to fetch specified models, * and set the model recursiveness to this level. setting it to false * disables this feature. DEFAULTS TO: true * * - notices: (boolean, optional) issues E_NOTICES for bindings referenced in a * containable call that are not valid. DEFAULTS TO: true * * - autoFields: (boolean, optional) auto-add needed fields to fetch requested * bindings. DEFAULTS TO: true * * @param object $Model Model using the behavior * @param array $settings Settings to override for model. * @access public */ function setup(&$Model, $settings = array()) { if (!isset($this->settings[$Model->alias])) { $this->settings[$Model->alias] = array('recursive' => true, 'notices' => true, 'autoFields' => true); } $this->settings[$Model->alias] = array_merge($this->settings[$Model->alias], ife(is_array($settings), $settings, array())); }
/** * Initiate behavior for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ function setup(&$Model, $settings = array()) { $defaults = array('createdField' => 'created_by', 'modifiedField' => 'modified_by', 'model' => 'User'); if (!isset($this->__settings[$Model->alias])) { $this->__settings[$Model->alias] = $defaults; } $this->__settings[$Model->alias] = am($this->__settings[$Model->alias], ife(is_array($settings), $settings, array())); }
/** * Initiate behavior for the model using settings. * * @param object $Model Model using the behavior * @param array $settings Settings to override for model. * @access public */ function setup(&$Model, $settings = array()) { $defaults = array('field' => 'continuous_id', 'offset' => '1'); if (!isset($this->__settings[$Model->alias])) { $this->__settings[$Model->alias] = $defaults; } $this->__settings[$Model->alias] = am($this->__settings[$Model->alias], ife(is_array($settings), $settings, array())); }
/** * Initiate behaviour for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ function setup(&$Model, $settings = array()) { $default = array('field' => 'deleted', 'field_date' => 'deleted_date', 'delete' => true, 'find' => true); if (!isset($this->__settings[$Model->alias])) { $this->__settings[$Model->alias] = $default; } $this->__settings[$Model->alias] = array_merge($this->__settings[$Model->alias], ife(is_array($settings), $settings, array())); }
/** * Initiate behaviour for the model using specified settings. * * @param object $model Model using the behaviour * @param array $settings Settings to override for model. * * @access public */ function setup(&$model, $settings = array()) { $default = array('fieldName' => 'url'); if (!isset($this->settings[$model->name])) { $this->settings[$model->name] = $default; } $this->settings[$model->name] = Set::merge($this->settings[$model->name], ife(is_array($settings), $settings, array())); }
function setup(&$Model, $settings = array()) { $default = array('saveto' => 'ChangeLog'); if (!isset($this->__settings[$Model->alias])) { $this->__settings[$Model->alias] = $default; } $this->__settings[$Model->alias] = am($this->__settings[$Model->alias], ife(is_array($settings), $settings, array())); }
/** * Initiate behavior for the model using specified settings. Available settings: * * - incrementFieldName: (string) The name of the field which needs to be incremented * * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ function setup(&$Model, $settings = array()) { $default = array('incrementFieldName' => array('views')); if (!isset($this->__settings[$Model->alias])) { $this->__settings[$Model->alias] = $default; } $this->__settings[$Model->alias] = am($this->__settings[$Model->alias], ife(is_array($settings), $settings, array())); }
/** * @param string $curdir */ function browseforfolder($curdir) { global $maxlevel, $root, $brlist; $maxlevel = 0; $brlist = array(array("dir" => "/", "level" => 0, "put" => ife($curdir == "/", "", "/"))); _subbrowse($curdir, 0, 1); return $brlist; }
/** * Initiate behavior for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ function setup(&$Model, $settings = array()) { $defaults = array('field' => 'serial', 'length' => 5); if (!isset($this->__settings[$Model->alias])) { $this->__settings[$Model->alias] = $defaults; } $this->__settings[$Model->alias] = am($this->__settings[$Model->alias], ife(is_array($settings), $settings, array())); }
/** * Initiate behavior for the model using specified settings. * Available settings: * * - view_counter: string :: the field in the table that has the count * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ function setup(&$Model, $settings = array()) { $default = array('view_counter' => 'views'); if (!isset($this->__settings[$Model->alias])) { $this->__settings[$Model->alias] = $default; } $this->__settings[$Model->alias] = am($this->__settings[$Model->alias], ife(is_array($settings), $settings, array())); }
function setup(&$model, $settings = array()) { $default = array('field' => 'content', 'doctype' => 'XHTML 1.0 Strict'); if (!isset($this->settings[$model->name])) { $this->settings[$model->name] = $default; } $this->settings[$model->name] = array_merge($this->settings[$model->name], ife(is_array($settings), $settings, array())); }
/** * Initiate behaviour for the model using specified settings. * * @param object $model Model using the behaviour * @param array $settings Settings to override for model. * * @access public */ function setup(&$model, $settings = array()) { $default = array('table_label' => 'tags', 'tag_label' => 'tag', 'separator' => ','); if (!isset($this->settings[$model->name])) { $this->settings[$model->name] = $default; } $this->settings[$model->name] = array_merge($this->settings[$model->name], ife(is_array($settings), $settings, array())); }
function setup(&$model, $settings = array()) { $default = array('start_column' => 'begin_publishing', 'end_column' => 'end_publishing'); if (!isset($this->__settings[$model->alias])) { $this->__settings[$model->alias] = $default; } $this->__settings[$model->alias] = am($this->__settings[$model->alias], ife(is_array($settings), $settings, array())); $this->_checkColumn($model, $this->__settings[$model->alias]['start_column']); $this->_checkColumn($model, $this->__settings[$model->alias]['end_column']); }
/** * Setup method * * @param object $model * @param array $settings The array key 'on' can take 3 values : 'create', 'update' or 'both' */ function setup(&$model, $settings = array()) { $default = array('on' => 'create'); if (!isset($this->__settings[$model->alias])) { $this->__settings[$model->alias] = $default; } $this->__settings[$model->alias] = am($this->__settings[$model->alias], ife(is_array($settings), $settings, array())); // Twitter model $this->Twitter = ClassRegistry::init('Twitter.Twitter'); }
/** * Setup * * @param AppModel $model * @param array $settings * @access public */ public function setup(&$model, $settings = array()) { if (!isset($this->settings[$model->alias])) { $this->settings[$model->alias] = $this->defaults; } $this->settings[$model->alias] = am($this->settings[$model->alias], ife(is_array($settings), $settings, array())); $cfg = $this->settings[$model->alias]; $model->bindModel(array('hasMany' => array('Comment' => array('className' => $cfg['commentModel'], 'foreignKey' => 'foreign_key', 'unique' => true, 'conditions' => '', 'fields' => '', 'dependent' => true, 'order' => '', 'limit' => '', 'offset' => '', 'exclusive' => '', 'finderQuery' => '', 'counterQuery' => ''))), false); $model->Comment->bindModel(array('belongsTo' => array($model->name => array('className' => $model->name, 'foreignKey' => 'foreign_key', 'unique' => true, 'conditions' => '', 'fields' => '', 'dependent' => false))), false); $model->Comment->bindModel(array('belongsTo' => array($cfg['userModelAlias'] => array('className' => $cfg['userModelClass'], 'foreignKey' => 'user_id', 'conditions' => '', 'fields' => '', 'counterCache' => true, 'order' => ''))), false); }
/** * Method called automatically by model's constructor * * @param object $model Object of model * @param array $settings Settings for behavior */ function setup(&$model, $settings = array()) { // Initialize behavior's default settings $default = array('s3_access_key' => '', 's3_secret_key' => '', 'formfield' => '', 's3_path' => '', 'allowed_ext' => array('jpg', 'jpeg', 'png', 'gif'), 's3_request_headers' => array('Expires' => 'Fri, 30 Oct 2030 14:19:41 GMT', 'Cache-control' => 'public'), 's3_meta_headers' => array(), 's3_acl' => 'public-read', 'append_salt' => false, 's3_bucket' => '', 'required' => false, 'unique' => true); foreach ($settings as $field => $options) { // Merge behavior's default settings and model field's settings $settings = am($default, ife(is_array($options), $options, array())); // Put the settings in class variable $this->settings[$model->name][$field] = $settings; } }
/** * Initialize the fixture. * */ function init() { if (isset($this->import) && (is_string($this->import) || is_array($this->import))) { $import = array(); if (is_string($this->import) || is_array($this->import) && isset($this->import['model'])) { $import = am(array('records' => false), ife(is_array($this->import), $this->import, array())); $import['model'] = ife(is_array($this->import), $this->import['model'], $this->import); } elseif (isset($this->import['table'])) { $import = am(array('connection' => 'default', 'records' => false), $this->import); } if (isset($import['model']) && (class_exists($import['model']) || loadModel($import['model']))) { $model =& new $import['model'](); $db =& ConnectionManager::getDataSource($model->useDbConfig); $db->cacheSources = false; $this->table = $this->useTable; $schema = $model->schema(true); $this->fields = $schema->value; $this->fields[$model->primaryKey]['key'] = 'primary'; } elseif (isset($import['table'])) { $model =& new Model(null, $import['table'], $import['connection']); $db =& ConnectionManager::getDataSource($import['connection']); $db->cacheSources = false; $model->name = Inflector::camelize(Inflector::singularize($import['table'])); $model->table = $import['table']; $model->tablePrefix = $db->config['prefix']; $schema = $model->schema(true); $this->fields = $schema->value; } if ($import['records'] !== false && isset($model) && isset($db)) { $this->records = array(); $query = array('fields' => array_keys($this->fields), 'table' => $db->name($model->table), 'alias' => $model->name, 'conditions' => array(), 'order' => null, 'limit' => null); foreach ($query['fields'] as $index => $field) { $query['fields'][$index] = $db->name($query['alias']) . '.' . $db->name($field); } $records = $db->fetchAll($db->buildStatement($query, $model), false, $model->name); if ($records !== false && !empty($records)) { $this->records = Set::extract($records, '{n}.' . $model->name); } } } if (!isset($this->table)) { $this->table = Inflector::underscore(Inflector::pluralize($this->name)); } if (!isset($this->primaryKey) && isset($this->fields['id'])) { $this->primaryKey = 'id'; } if (isset($this->fields)) { foreach ($this->fields as $index => $field) { if (empty($field['default'])) { unset($this->fields[$index]['default']); } } } }
function setup(&$model, $settings = array()) { $default = $this->defaults; if (!isset($this->__settings[$model->alias])) { $this->__settings[$model->alias] = $default; } $this->__settings[$model->alias] = array_merge($this->__settings[$model->alias], ife(is_array($settings), $settings, array())); $this->AssocType = ClassRegistry::init('Management.Relation'); if ($this->__settings[$model->alias]['active']) { $this->__autoBind(); $this->__autoUnbindBind(); } }
/** * Run before a model is saved, used to set up slug for model. * * @param object $model Model about to be saved. * * @access public * @since 1.0 */ function beforeSave(&$model) { if (!is_array($this->settings[$model->name]['label'])) { $this->settings[$model->name]['label'] = array($this->settings[$model->name]['label']); } foreach ($this->settings[$model->name]['label'] as $field) { if (!$model->hasField($field)) { return; } } if ($model->hasField($this->settings[$model->name]['slug']) && ($this->settings[$model->name]['overwrite'] || empty($model->{$model->primaryKey}))) { $label = ''; foreach ($this->settings[$model->name]['label'] as $field) { $label .= ife(!empty($label), ' ', ''); $label .= $model->data[$model->name][$field]; } if (empty($label)) { $label = 'slug'; } // If the user submits a non-empty slug use that one, else generate a new one from the label field $slug = ''; if (isset($model->data[$model->name][$this->settings[$model->name]['slug']]) && !empty($model->data[$model->name][$this->settings[$model->name]['slug']])) { $slug = $this->_getSlug($model->data[$model->name][$this->settings[$model->name]['slug']], $this->settings[$model->name]); } else { $slug = $this->_getSlug($label, $this->settings[$model->name]); } // Find out if such a slug exists $conditions = "{$model->name}.{$this->settings[$model->name]['slug']} = '{$slug}'"; if (!empty($model->{$model->primaryKey})) { $conditions[$model->name . '.' . $model->primaryKey] = '!= ' . $model->{$model->primaryKey}; } $result = $model->findAll($conditions, array($model->primaryKey, $this->settings[$model->name]['slug']), null, null, 1, 0); $sameUrls = null; if ($result !== false && !empty($result)) { $sameUrls = Set::extract($result, '{n}.' . $model->name . '.' . $this->settings[$model->name]['slug']); } if (!empty($sameUrls)) { $begginingSlug = $slug; $index = 1; while ($index > 0) { if (!in_array($begginingSlug . $this->settings[$model->name]['separator'] . $index, $sameUrls)) { $slug = $begginingSlug . $this->settings[$model->name]['separator'] . $index; $index = -1; } $index++; } } $model->data[$model->name][$this->settings[$model->name]['slug']] = $slug; } }
/** * Initiate behaviour for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ function setup(&$model, $settings = array()) { $default = $this->defaults; $default['conditions'] = array('Comment.class' => $model->alias); if (!isset($this->__settings[$model->alias])) { $this->__settings[$model->alias] = $default; } $this->__settings[$model->alias] = array_merge($this->__settings[$model->alias], ife(is_array($settings), $settings, array())); //handles model binding to the model //according to the auto_bind settings (default true) if ($this->__settings[$model->alias]['auto_bind']) { $hasManyComment = array('Comment' => array('className' => $this->__settings[$model->alias]['class'], 'foreignKey' => $this->__settings[$model->alias]['foreign_key'], 'dependent' => $this->__settings[$model->alias]['dependent'], 'conditions' => $this->__settings[$model->alias]['conditions'])); $commentBelongsTo = array($model->alias => array('className' => $model->alias, 'foreignKey' => $this->__settings[$model->alias]['foreign_key'], 'counterCache' => $this->__settings[$model->alias]['counter_cache'])); $model->bindModel(array('hasMany' => $hasManyComment), false); $model->Comment->bindModel(array('belongsTo' => $commentBelongsTo), false); } }
/** * Connect to the memcached server(s) */ function _connect() { if (defined('DISABLE_CACHE')) { return false; } $this->_Memcache =& new Memcache(); // several servers - use addServer foreach ($this->servers as $server) { $parts = explode(':', $server); $host = $parts[0]; $port = ife(isset($parts[1]), $parts[1], 11211); // default port if ($this->_Memcache->addServer($host, $port)) { $this->_connected = true; } } return $this->_connected; }
/** * Run before a model is saved, used to set up slug for model. * * @param object $model Model about to be saved. * * @access public * @since 1.0 */ function beforeSave(&$model) { if (!is_array($this->settings[$model->name]['label'])) { $this->settings[$model->name]['label'] = array($this->settings[$model->name]['label']); } foreach ($this->settings[$model->name]['label'] as $field) { if (!$model->hasField($field)) { return; } } if ($model->hasField($this->settings[$model->name]['slug']) && ($this->settings[$model->name]['overwrite'] || empty($model->{$model->primaryKey}))) { $label = ''; foreach ($this->settings[$model->name]['label'] as $field) { $label .= ife(!empty($label), ' ', ''); $label .= $model->data[$model->name][$field]; } if (empty($label)) { $label = 'slug'; } $slug = $this->_slug($label, $this->settings[$model->name]); $conditions = array($model->name . '.' . $this->settings[$model->name]['slug'] => 'LIKE ' . $slug . '%'); if (!empty($model->{$model->primaryKey})) { $conditions[$model->name . '.' . $model->primaryKey] = '!= ' . $model->{$model->primaryKey}; } $result = $model->findAll($conditions, array($model->primaryKey, $this->settings[$model->name]['slug']), null, null, 1, 0); $sameUrls = null; if ($result !== false && !empty($result)) { $sameUrls = Set::extract($result, '{n}.' . $model->name . '.' . $this->settings[$model->name]['slug']); } if (!empty($sameUrls)) { $begginingSlug = $slug; $index = 1; while ($index > 0) { if (!in_array($begginingSlug . $this->settings[$model->name]['separator'] . $index, $sameUrls)) { $slug = $begginingSlug . $this->settings[$model->name]['separator'] . $index; $index = -1; } $index++; } } $model->data[$model->name][$this->settings[$model->name]['slug']] = $slug; } }
/** * Initiate behaviour for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ function setup(&$model, $settings = array()) { $default = $this->defaults; $default['conditions'] = array('Rating.class' => $model->alias); $default['requre_auth'] = Configure::read('Rating.require_auth'); $ratingClass = isset($default['plugin']) ? $default['plugin'] . '.' . $default['class'] : $default['class']; if (!isset($this->__settings[$model->alias])) { $this->__settings[$model->alias] = $default; } $this->__settings[$model->alias] = array_merge($this->__settings[$model->alias], ife(is_array($settings), $settings, array())); // handles model binding to the model // according to the auto_bind settings (default true) if ($this->__settings[$model->alias]['auto_bind']) { $hasManyRating = array('Rating' => array('className' => $ratingClass, 'foreignKey' => $this->__settings[$model->alias]['foreign_key'], 'dependent' => $this->__settings[$model->alias]['dependent'], 'conditions' => $this->__settings[$model->alias]['conditions'])); $ratingBelongsTo = array($model->alias => array('className' => $model->alias, 'foreignKey' => $this->__settings[$model->alias]['foreign_key'], 'counterCache' => $this->__settings[$model->alias]['counter_cache'])); $model->bindModel(array('hasMany' => $hasManyRating), false); $model->Rating->bindModel(array('belongsTo' => $ratingBelongsTo), false); } }
/** * Before save method. Called before all saves * * Overriden to transparently manage setting the item position to the end of the list * * @param AppModel $model * @return boolean True to continue, false to abort the save */ function beforeSave(&$model) { extract($this->settings[$model->name]); if (empty($model->data[$model->name][$model->primaryKey])) { } $tempData = array(); foreach ($fields as $key => $value) { $field = ife(is_numeric($key), $value, $key); if (isset($model->data[$model->name][$field])) { if ($this->__isUploadFile($model->data[$model->name][$field])) { $tempData[$field] = $model->data[$model->name][$field]; $model->data[$model->name][$field] = $this->__getContent($model->data[$model->name][$field]); } else { unset($model->data[$model->name][$field]); } } } $this->runtime[$model->name]['beforeSave'] = $tempData; return true; }
/** * Initiate behaviour for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ function setup(&$model, $settings = array()) { $default = $this->defaults; $default['conditions'] = array('Review.class' => $model->alias); $default['blcklist_keywords'] = explode(',', Configure::read('Website.blacklist_keywords')); $default['blcklist_words'] = explode(',', Configure::read('Website.blacklist_words')); $reviewClass = isset($default['plugin']) ? $default['plugin'] . '.' . $default['class'] : $default['class']; if (!isset($this->__settings[$model->alias])) { $this->__settings[$model->alias] = $default; } $this->__settings[$model->alias] = array_merge($this->__settings[$model->alias], ife(is_array($settings), $settings, array())); // handles model binding to the model // according to the auto_bind settings (default true) if ($this->__settings[$model->alias]['auto_bind']) { $hasManyReview = array('Review' => array('className' => $reviewClass, 'foreignKey' => $this->__settings[$model->alias]['foreign_key'], 'dependent' => $this->__settings[$model->alias]['dependent'], 'conditions' => $this->__settings[$model->alias]['conditions'])); $reviewBelongsTo = array($model->alias => array('className' => $model->alias, 'foreignKey' => $this->__settings[$model->alias]['foreign_key'], 'counterCache' => $this->__settings[$model->alias]['counter_cache'], 'counterScope' => $this->__settings[$model->alias]['counter_cache_scope'])); $model->bindModel(array('hasMany' => $hasManyReview), false); $model->Review->bindModel(array('belongsTo' => $reviewBelongsTo), false); } }
function validFile($check, $settings) { $_default = array('required' => false, 'extensions' => array('jpg', 'jpeg', 'gif', 'png')); $_settings = array_merge($_default, ife(is_array($settings), $settings, array())); // Remove first level of Array $_check = array_shift($check); if ($_settings['required'] == false && $_check['size'] == 0) { return true; } // No file uploaded. if ($_settings['required'] && $_check['size'] == 0) { return false; } // Check for Basic PHP file errors. if ($_check['error'] !== 0) { return false; } // Use PHPs own file validation method. if (is_uploaded_file($_check['tmp_name']) == false) { return false; } // Valid extension return Validation::extension($_check, $_settings['extensions']); }