protected function grabbercrms($directory_array) { try { $directory_id = Arr::get($directory_array, 'id'); $directory = new Crm_directory($directory_id); $error_info = 'mkwid: ' . Arr::get($directory_array, 'social', 'no soc') . '/' . $directory_id; if (!$directory->exists()) { throw new Exception($error_info . ' doesn\'t exist.'); } if ($directory->is_deleted) { throw new Exception($error_info . ' is set for deletion.'); } if (!$directory->user_id) { throw new Exception($error_info . ' has no user id.'); } $user = new User($directory->user_id); if (!$user->exists()) { throw new Exception($error_info . ' has no user'); } $social = Arr::get($directory_array, 'social'); if (is_null($social)) { throw new Exception($error_info . ' invalid social'); } $user_socials = Access_token::inst()->get_crm_user_socials($directory->user_id); if (!in_array($social, $user_socials)) { throw new Exception($error_info . ' invalid social'); } $this->load->library('crmer'); $crmer = Crmer::factory($user->id); if ($social === 'facebook') { $data = $crmer->getCrmPosts($directory_array); } else { if ($social === 'twitter') { $data = $crmer->getCrmTweets($directory_array); } else { if ($social === 'instagram') { $data = $crmer->getCrmActivities($directory_array); } else { $data = array(); } } } if (!is_array($data)) { throw new Exception($error_info . ' no results for mentions, not an array. mkwid: '); } foreach ($data as $original_id => $row) { $activity = new Crm_directory_activity(); $activity->where(array('crm_directory_id' => $directory_array['id'], 'original_id' => $original_id))->get(1); $activity->social = $social; $activity->original_id = Arr::get($row, 'original_id'); $activity->created_at = Arr::get($row, 'created_at'); $message = Arr::get($row, 'message'); $trimMessage = strlen($message) > 4000 ? substr($message, 0, 4000) : $message; $activity->message = $trimMessage; $activity->creator_id = Arr::get($row, 'creator_id'); $activity->creator_name = Arr::get($row, 'creator_name'); $activity->creator_image_url = Arr::get($row, 'creator_image_url'); $activity->other_fields = serialize(Arr::get($row, 'other_fields', array())); $activity->source = Arr::get($row, 'source'); $relations = array('crm_directory' => $directory); $saved = $activity->save($relations); if (!$saved) { log_message('TASK_ERROR', __FUNCTION__ . ' > ' . 'Activity not saved for mkwid: ' . $error_info . ' grabbed: ' . $activity->error->string); } } // get socials that were already grabbed $grabbed_socials = $directory->get_grabbed_socials_as_array(); if (!in_array($social, $grabbed_socials)) { $grabbed_socials[] = $social; $now = date('U'); $directory->grabbed_socials = implode(',', $grabbed_socials); $directory->grabbed_at = $now; $saved = $directory->save(); if (!$saved) { log_message('TASK_ERROR', __FUNCTION__ . ' > ' . 'Mention keyword not saved for mkwid: ' . $error_info . ' grabbed: ' . $activity->error->string); } } log_message('TASK_SUCCESS', __FUNCTION__ . ' > ' . 'Mentions for mkwid: ' . $error_info . ' grabbed'); } catch (Exception $e) { log_message('TASK_ERROR', __FUNCTION__ . ' > ' . $e->getMessage()); return; // throw $e; } }
/** * Check crm directories set for deletion * And move them to queue * * minutely ? */ public function queue_deleted_crm_directories() { $directories = Crm_directory::inst()->get_by_is_deleted(1); if (!$directories->exists()) { log_message('CRON_ERROR', __FUNCTION__ . ' > ' . 'No crm directories for removal'); return; } foreach ($directories as $directory) { $args = $directory->to_array(); $this->jobQueue->addJob('tasks/crm_directory_task/remove_deleted', $args, array('thread' => self::CRM_THREAD)); } $ids_str = implode(', ', array_values($directories->all_to_single_array('id'))); log_message('CRON_SUCCESS', __FUNCTION__ . ' > ' . 'Crm directories for removal ids: ' . $ids_str); return; }
public function delete($directoryId) { $directory = Crm_directory::inst($directoryId); $userId = $this->c_user->id; if (!$directory->exists() or !$directory->isUser($userId)) { $this->addFlash(lang('owner_error')); } else { $activities = $this->crmManager->getDirectoryActivities($userId, $this->profile->id, $directoryId); foreach ($activities as $activity) { $activity->delete(); } if ($directory->delete()) { $this->addFlash(lang('directory_delete_success'), 'success'); } else { $this->addFlash(lang('directory_delete_error')); } } redirect('crm/directories'); }
public function remove_unrelated() { try { $limit = 500; $mentions = Crm_directory::inst()->where('user_id IS NULL')->get($limit)->delete_all(); log_message('TASK_SUCCESS', __FUNCTION__ . ' > ' . 'Unrelated crm directories removed'); } catch (Exception $e) { log_message('TASK_ERROR', __FUNCTION__ . ' > ' . $e->getMessage()); return; // throw $e; } }