/** * Add new notification * * @param $user_id * @param $review_id */ public static function addOne($user_id, $review_id) { $obj = new self(); $obj->from_array(array('user_id' => $user_id, 'review_id' => $review_id, 'created' => time())); $obj->save(); return $obj; }
/** * Add new Queue_Item to queue * * @param string $method * @param array $args = array() */ public static function add($method, $args = array()) { $new_item = new self(); $new_item->from_array(array('body' => array('method' => $method, 'args' => $args)))->send(); }
/** * Update user's directories * * @param $user_id * @param $profile_id * @param $directories_ids * @param array $additions * * @return array */ public static function update_user_dir($user_id, $profile_id, $directories_ids, $additions = array()) { $errors = array(); $obj = new self(); $table = $obj->table; $obj = new self(); $old_options = array(); foreach ($obj->where(array('user_id' => $user_id, 'profile_id' => $profile_id))->get() as $old_option) { $old_options[$old_option->directory_id] = $old_option->to_array(); } $sql = "DELETE FROM {$table} WHERE user_id = {$user_id} AND profile_id = {$profile_id}"; $obj->db->query($sql); if (empty($directories_ids)) { return; } $notify = empty($additions['notify']) ? 0 : 1; foreach ($directories_ids as $dir_id => $link) { $directory = new DM_Directory($dir_id); if (!$directory->exists()) { $errors[] = 'Directory #' . $dir_id . '(' . $link . ') doesn\'t exist'; continue; } try { $directory_parcer = Directory_Parser::factory($directory->type); } catch (Exception $e) { $errors[] = 'Directory\'s #' . $directory->id . '(' . $directory->name . ') parser doesn\'t configured'; continue; } if (!$directory_parcer->valid_url($link)) { $errors[] = 'Invalid url for directory ' . $directory->name; continue; } if (empty($old_options[$dir_id]) || $link !== $old_options[$dir_id]['link']) { Review::deleteByUserDirectory($user_id, $dir_id); } $new_settings = new self(); $new_settings->from_array(array('user_id' => $user_id, 'profile_id' => $profile_id, 'link' => $link, 'directory_id' => $dir_id, 'notify' => $notify)); $new_settings->save(); } return $errors; }
/** * Run validation rules on each passed custom form * return each model in array and errors if exist * * @param $feeds (array) - key - form block id, value - array('title' => 'new title', 'link' => 'new link') * @return array (errors (array), models(array)) */ public static function validate_rss_custom_pack($feeds) { $errors = array(); $models = array(); foreach ($feeds as $feed_key => $feed_value) { $rss_feed = new self(); $rss_feed->from_array($feed_value, array('title', 'link')); $rss_feed->validate(); if (!$rss_feed->valid) { foreach ($rss_feed->error->all as $err_key => $err_value) { $errors[$feed_key][$err_key] = $err_value; } } $models[] = $rss_feed; } return array($errors, $models); }
/** * Validate a form * Check Description / URL / post type and social networks fields * * @access public * @param $feeds * @return array */ public static function validate_post($feeds) { $errors = array(); $category_slug = $feeds['attachment_type']; $feeds['title'] = 'from ' . clear_domain(site_url()); $post = new self(); $post->from_array($feeds, array('description', 'url', 'posting_type', 'category_id')); if (!$post->posting_type) { $post->posting_type = 'immediate'; } $post->validate(); if (!$post->valid) { foreach ($post->error->all as $err_key => $err_value) { $errors[$err_key] = $err_value; } } if (isset($feeds['url'])) { if (!empty($feeds['url'])) { if (filter_var($feeds['url'], FILTER_VALIDATE_URL) === false || strstr($feeds['url'], '.') === false) { $errors['url'] = lang('email_error'); } } } if (!isset($feeds['post_to_socials'])) { $errors['post_to_groups[]'] = lang('socials_error'); } if (isset($feeds['posting_type'])) { //validate Schedule date if ($feeds['posting_type'] != 'immediate') { $scheduled_errors = self::_validate_scheduled_data($feeds); $errors = array_merge($errors, $scheduled_errors); } } if ($category_slug == 'photos') { if (empty($feeds['image_name'])) { $errors['image_name'] = lang('image_error'); } } if (!empty($feeds['post_to_socials']) && in_array('twitter', $feeds['post_to_socials'])) { $twitter_limit = array(1 => 140, 2 => 117, 3 => 94); $input_category = 1; $file = !empty($feeds['image_name']) || isset($feeds['file_name']); $link = !empty($feeds['url']); if ($file && $link) { $input_category = 3; } elseif ($file || $link) { $input_category = 2; } if (mb_strlen($feeds['description']) > $twitter_limit[$input_category]) { $errors['description'] = lang('twitter_error'); } } if (!empty($feeds['post_to_socials']) && in_array('linkedin', $feeds['post_to_socials'])) { if (mb_strlen($feeds['description']) > 400) { $errors['description'] = lang('linkedin_error'); } } if ($category_slug == 'videos') { $video_errors = self::_validate_video($feeds); $errors = array_merge($errors, $video_errors); } else { if (empty($feeds['url']) && isset($feeds['post_to_socials']) && in_array('linkedin', $feeds['post_to_socials'])) { $errors['url'] = lang('url_error'); } } return $errors; }